{
 "schema_name": "page",
 "schema_version": "2.0",
 "page_type": "author",
 "url": "/authors/joel-lefevre/",
 "canonical": "/authors/joel-lefevre/",
 "language": "en",
 "hreflang": [],
 "translations": [],
 "heading": "Joel Lefevre: Football Prediction Record",
 "description": "1 settled pick by Joel Lefevre recorded before kick-off across 1 match, 1 Nov 2026: won 0 of 1 at our recorded market prices. Every pick with its source.",
 "first_paragraph": {
  "body": "Forecast Record recorded 1 settled live pick by Joel Lefevre before kick-off across 1 match on 1 November 2026. Won 0 of 1 settled live pick at our recorded market prices. Of the 63 predictions we hold for Joel Lefevre, 43 are linked to matches: 43 were recorded by us before kick-off. Figures as of 7 November 2026.",
  "key_number": "1",
  "data": "2026-11-07",
  "source_info": "our own evidence archive and market snapshot",
  "brand": "Forecast Record"
 },
 "indexable": false,
 "noindex_reason": "outside_core",
 "indexing_threshold": {
  "settled_count": 37,
  "date_count": 21,
  "required_settled": 10,
  "required_dates": 2
 },
 "data_date": "2026-11-07T18:07:51.685Z",
 "built_at": "2026-11-07T19:52:23.438Z",
 "lastmod": "2026-11-08T02:12:33.000Z",
 "content_hash": null,
 "meaning_hash": "cb0c73aea7d72a4313adfd05bc3804c3669602ee6c252c2f74d784f6b0f58813",
 "dependency_group": "author:e-aef77d241797d8716c6a7ee2",
 "release_id": "20261107-195223",
 "markup": [
  {
   "type_code": "WebPage",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "Organization",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "Person",
   "allowed": true,
   "cause": null
  }
 ],
 "exports": [
  {
   "type_code": "json",
   "url": "/authors/joel-lefevre/index.json",
   "bytes": null
  },
  {
   "type_code": "csv",
   "url": "/authors/joel-lefevre/picks.csv",
   "bytes": null
  }
 ],
 "modules": {
  "affiliate": true,
  "api": true,
  "compare_yourself": false
 },
 "affiliate_block": {
  "container": true,
  "request_url": "/partnery/moi",
  "disclosure": "Some links below are affiliate links and are marked as such. They never affect what you see above: the order of any table is computed before any commission is known.",
  "page_category": "author"
 },
 "restrictions": {
  "name_withdrawn": false,
  "tracker_number": null,
  "withdrawn_quotes": [],
  "removed_at": null,
  "cause": null,
  "suspended_records": [],
  "withdrawal_log_number": 0
 },
 "page_links": {
  "methodology": "/methodology/",
  "right_of_reply": "/right-of-reply/",
  "source_coverage": "/coverage/",
  "corrections_log": "/corrections/",
  "api": "/api/",
  "claim": "/claim/"
 },
 "entity": {
  "id": "e-aef77d241797d8716c6a7ee2",
  "public_name": "Joel Lefevre",
  "tracker_number": 1378,
  "status": "active",
  "inactive_since": null,
  "verified_creator": false,
  "observation_period": {
   "since": "2026-09-27",
   "until": "2026-11-07"
  },
  "platform_list": [
   {
    "medium": "website",
    "handle": null,
    "url": null,
    "link_confirmed": false,
    "show": true
   }
  ],
  "comment": null
 },
 "headline_number": {
  "metric": {
   "metric_id": "p-e-aef77d241797d8716c6a7ee2-roi-market-price-90d-z99",
   "code_name": "roi_market_price",
   "display_name": "Return on stakes at an independent odds snapshot",
   "window_kind": "90d",
   "window_from": "2026-08-09",
   "window_to": "2026-11-07",
   "amount": "-100.0000",
   "unit": "percent",
   "data_status": "calculated",
   "cause": null,
   "n_bets": 1,
   "n_events": 1,
   "n_void": 0,
   "ci_low": null,
   "ci_high": null,
   "ci_method": "not_estimated",
   "price_source": "market_price",
   "coverage_percent": "0.00",
   "breakdown": [],
   "methodology_version": "2.2",
   "data_date": "2026-11-07T18:07:51.685Z",
   "enough_for_ranking": false,
   "series_uid": null,
   "series_key": "market_price",
   "series_label": "At an independent odds snapshot"
  },
  "byline": "Return on stakes at an independent odds snapshot over 90 days: 1 settled pick across 1 match",
  "average_odds": "10.00",
  "odds_from_author": 0,
  "odds_from_snapshot": 1
 },
 "metrics": [],
 "history": [],
 "simulation": {
  "series_uid": "sr-ecdc4171f82f0e052f7960d2",
  "bankroll_hundredths": 990000,
  "reserve_hundredths": 0,
  "issued_total_hundredths": 1000000,
  "top_up_count": 0,
  "profit_hundredths": -10000,
  "rewards_off": null,
  "initial_hundredths": 1000000,
  "stake_hundredths": 10000,
  "data_points": [
   {
    "at": "2026-11-01T16:27:38.825Z",
    "bankroll_hundredths": 990000,
    "profit_hundredths": -10000,
    "outcome_id": "ish-eb3ff06f24f183879d61348f"
   }
  ],
  "top_ups": [],
  "rule": "When the balance falls below 100 points and no bets are open, 10000 points are added; the remaining balance is kept. While bets are open we wait for settlement.",
  "series_key": "market_price",
  "series_label": "At an independent odds snapshot"
 },
 "simulations": [],
 "completeness": {
  "detected": 275,
  "recognised": 63,
  "accepted": 1,
  "executed": 1,
  "calculated": 1,
  "gaps": [
   {
    "cause": "outside the method",
    "figure": 42
   },
   {
    "cause": "National-team matches",
    "figure": 10
   },
   {
    "cause": "not_supported",
    "figure": 8
   },
   {
    "cause": "other reading",
    "figure": 2
   }
  ]
 },
 "record_counts": {
  "dictionary_version": "1",
  "statements": 275,
  "of_them_restored": 0,
  "not_predictions": {
   "opinions": 28,
   "not_about_a_match": 181,
   "unclassified": 0
  },
  "predictions": 63,
  "predictions_restored": 0,
  "matches": 43,
  "admitted": 1,
  "qualifying_picks": 1,
  "qualifying_picks_restored": 0,
  "settled_picks": 1,
  "settled_picks_restored": 0,
  "series_list": [
   {
    "code_name": "market_price",
    "derived": false,
    "is_restored": false,
    "qualifying_picks": 1,
    "settled_picks": 1,
    "void": 0,
    "pending_picks": 0,
    "matches": 1,
    "operations_settled": 1,
    "stakes_hundredths": [
     10000
    ],
    "methodologies": [
     "2.2"
    ],
    "display_name": "At an independent odds snapshot"
   },
   {
    "code_name": "derived_series",
    "derived": true,
    "is_restored": false,
    "qualifying_picks": 43,
    "settled_picks": 37,
    "void": 0,
    "pending_picks": 6,
    "matches": 37,
    "operations_settled": 40,
    "stakes_hundredths": [
     10000
    ],
    "methodologies": [
     "2.2"
    ],
    "display_name": "Forecast Record reconstruction from the predicted score"
   }
  ],
  "gaps": [
   {
    "code_name": "not_admitted",
    "cause": "outside the method",
    "figure": 42
   },
   {
    "code_name": "outside_coverage",
    "cause": "National-team matches",
    "figure": 10
   },
   {
    "code_name": "not_supported",
    "cause": "not_supported",
    "figure": 8
   },
   {
    "code_name": "ambiguous",
    "cause": "other reading",
    "figure": 2
   }
  ],
  "duplicates": 11,
  "junk": {
   "service": 6,
   "ads": 1
  },
  "dictionary_url": "/methodology/#words"
 },
 "evidence_items": [
  {
   "observation_id": "n-43d6c1137d7a633ef4cdd7c7",
   "url": "/evidence/?pick=n-43d6c1137d7a633ef4cdd7c7",
   "quote_text": "Get FREE daily news and in-depth previews for games from the biggest leagues and competitions",
   "fragment_from": 4631,
   "fragment_to": 4724,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/tennis/wta-championships/preview/coco-gauff-vs-jessica-pegula-prediction-form-head-to-head_608653.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "6e09ac8870d5ef3c4e8c91fd28057a70f8b6b5fc7e64258a68dcbcf1bceb730e",
    "material_removed": false
   },
   "published_at": "2026-11-07T00:07:35.000Z",
   "detected_at": "2026-11-07T02:10:14.225Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-07T00:07:35.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-07T00:07:35.000Z",
    "detected_at": "2026-11-07T02:10:14.225Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-7dc8c24b481838795c8db543",
   "url": "/authors/joel-lefevre/picks/5/#pick-n-7dc8c24b481838795c8db543",
   "quote_text": "We say: Gauff to win in three sets",
   "fragment_from": 4408,
   "fragment_to": 4442,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/tennis/wta-championships/preview/coco-gauff-vs-jessica-pegula-prediction-form-head-to-head_608653.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "6e09ac8870d5ef3c4e8c91fd28057a70f8b6b5fc7e64258a68dcbcf1bceb730e",
    "material_removed": false
   },
   "published_at": "2026-11-07T00:07:35.000Z",
   "detected_at": "2026-11-07T02:10:14.225Z",
   "executed_at": null,
   "statement_class": "unpriced",
   "status": "not_supported",
   "cause": "",
   "cause_code": "not_supported",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-07T00:07:35.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-07T00:07:35.000Z",
    "detected_at": "2026-11-07T02:10:14.225Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-bb3bb7deec67b8f7f1abd143",
   "url": "/authors/joel-lefevre/picks/5/#pick-n-bb3bb7deec67b8f7f1abd143",
   "quote_text": "We say: Rybakina to win in two sets",
   "fragment_from": 3732,
   "fragment_to": 3767,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/tennis/wta-championships/preview/elena-rybakina-vs-linda-noskova-prediction-form-head-to-head_608656.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "5a82932ea2b6e119f9b6ed6cc3c8650764eda176cab4587e48d7cad555bfd6b3",
    "material_removed": false
   },
   "published_at": "2026-11-07T00:13:00.000Z",
   "detected_at": "2026-11-07T01:10:28.537Z",
   "executed_at": null,
   "statement_class": "unpriced",
   "status": "not_supported",
   "cause": "",
   "cause_code": "not_supported",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-07T00:13:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-07T00:13:00.000Z",
    "detected_at": "2026-11-07T01:10:28.537Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-e7126c08288f36f38bc93a08",
   "url": "/authors/joel-lefevre/picks/5/#pick-n-e7126c08288f36f38bc93a08",
   "quote_text": "We say: Le Havre 1-0 Lorient",
   "fragment_from": 3453,
   "fragment_to": 3481,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "f55a3b01240a0a630236716826dc5adaf9e915f2af2d7e8f8af116a803d5ce2b",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:01:24.000Z",
   "detected_at": "2026-11-06T03:10:10.497Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-148050af9e63",
    "display_name": "Le Havre — Lorient",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-08T16:15:00.000Z",
    "url": "/football/matches/le-havre-vs-lorient-2026-11-08/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "Le Havre 1-0 Lorient",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-06T00:01:24.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:01:24.000Z",
    "detected_at": "2026-11-06T03:10:10.497Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Le Havre 1-0 Lorient",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Le Havre 1-0 Lorient"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 8 November 2026, 16:15 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 8 November 2026, 16:15 UTC."
   },
   "settlements": [
    {
     "operation_id": "fc57d27a259a6672b937a7c997ac8bc0a2b230f40d801c95bfb7ea8e981ca16a",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Le Havre",
     "decimal_odds": "2.8000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T21:29:27.299Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-91d18de68a86727cb55451a8",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-91d18de68a86727cb55451a8",
   "quote_text": "We say: Angers 0-2 Nice",
   "fragment_from": 3544,
   "fragment_to": 3567,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/angers/preview/angers-vs-nice-prediction-team-news-lineups_608545.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1692db12260b8cfaf341ec6954f66c8dad7a38734fbe155f50979957343006c3",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:05:39.000Z",
   "detected_at": "2026-11-06T02:10:04.453Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "ambiguous",
   "cause": "",
   "cause_code": "ambiguous",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:05:39.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:05:39.000Z",
    "detected_at": "2026-11-06T02:10:04.453Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-e6de13945ddaf00fa3d426bd",
   "url": "/evidence/?pick=n-e6de13945ddaf00fa3d426bd",
   "quote_text": "Derek Cornelius is dealing with a sore hip, Keyliane Abdallah has a knock and Emerson Palmieri is questionable because of a knee issue.",
   "fragment_from": 3294,
   "fragment_to": 3429,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:42:45.000Z",
   "detected_at": "2026-11-06T01:10:23.485Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:42:45.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-92978dac38f8096e5facbc4c",
   "url": "/evidence/?pick=n-92978dac38f8096e5facbc4c",
   "quote_text": "Odsonne Edouard is doubtful for Lens, while Ismaelo Ganiou is recovering from knee surgery",
   "fragment_from": 2860,
   "fragment_to": 2950,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:42:45.000Z",
   "detected_at": "2026-11-06T01:10:23.485Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:42:45.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-b17a15c5b111adb5e119c46f",
   "url": "/evidence/?pick=n-b17a15c5b111adb5e119c46f",
   "quote_text": "their resilience will be tested like never before, as they hope to avoid losing three successive competitive games for the first time all season.",
   "fragment_from": 933,
   "fragment_to": 1078,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:42:45.000Z",
   "detected_at": "2026-11-06T01:10:23.485Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:42:45.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-91459e36442af01c03eee81e",
   "url": "/evidence/?pick=n-91459e36442af01c03eee81e",
   "quote_text": "Fresh off a pulverizing Champions League defeat in midweek, Lens will try to build themselves back up",
   "fragment_from": 265,
   "fragment_to": 366,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:42:45.000Z",
   "detected_at": "2026-11-06T01:10:23.485Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:42:45.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-a63993097c8e495fc4bf9e0a",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-a63993097c8e495fc4bf9e0a",
   "quote_text": "We say: Lens 0-2 Marseille",
   "fragment_from": 3873,
   "fragment_to": 3899,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:42:45.000Z",
   "detected_at": "2026-11-06T01:10:23.485Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-35db186e586c",
    "display_name": "RC Lens — Olympique de Marseille",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-08T19:45:00.000Z",
    "url": "/football/matches/rc-lens-vs-olympique-de-marseille-2026-11-08/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "RC Lens 0-2 Olympique de Marseille",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-06T00:42:45.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "RC Lens 0-2 Olympique de Marseille",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "0-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: RC Lens 0-2 Olympique de Marseille"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 8 November 2026, 19:45 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 8 November 2026, 19:45 UTC."
   },
   "settlements": [
    {
     "operation_id": "4e2bcca5a03ec40b32f6104de38d704d2e1c26a81b264e2f7eab597c23fd2079",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Olympique de Marseille",
     "decimal_odds": "2.9750",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T09:14:42.651Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-36863c674f462b4cdf532dd1",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-36863c674f462b4cdf532dd1",
   "quote_text": "We say: Le Mans 1-2 Monaco",
   "fragment_from": 3601,
   "fragment_to": 3627,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/le-mans/preview/le-mans-vs-monaco-prediction-team-news-lineups_608554.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e9b028e8e6ccf067b3e6cc98644c94c36ae7343ccfb157c6676671356b507445",
    "material_removed": false
   },
   "published_at": "2026-11-06T00:47:10.000Z",
   "detected_at": "2026-11-06T01:10:21.817Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "ambiguous",
   "cause": "",
   "cause_code": "ambiguous",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-06T00:47:10.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T00:47:10.000Z",
    "detected_at": "2026-11-06T01:10:21.817Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-40c3b527f84d7440eaeb0c80",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-40c3b527f84d7440eaeb0c80",
   "quote_text": "We say: CF Montreal 1-4 Vancouver Whitecaps",
   "fragment_from": 3952,
   "fragment_to": 3995,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/montreal-impact/preview/montreal-vs-vancouver-prediction-team-news-lineups_608443.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "4b231cf390ed3a155da3bc989d034fdd62a8a5fad9d59d80fc477552e02df956",
    "material_removed": false
   },
   "published_at": "2026-11-04T23:16:57.000Z",
   "detected_at": "2026-11-05T00:10:08.141Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-ec3419650de7",
    "display_name": "CF Montréal — Vancouver Whitecaps",
    "competition_name": "MLS",
    "starts_at": "2026-11-07T21:00:00.000Z",
    "url": "/football/matches/cf-montreal-vs-vancouver-whitecaps-2026-11-07/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "CF Montréal 1-4 Vancouver Whitecaps",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-04T23:16:57.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T23:16:57.000Z",
    "detected_at": "2026-11-05T00:10:08.141Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "CF Montréal 1-4 Vancouver Whitecaps",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-4",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: CF Montréal 1-4 Vancouver Whitecaps"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 7 November 2026, 21:00 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
   },
   "settlements": [
    {
     "operation_id": "224977e21a0a5b07e1d078d3cf6a8e49c7a7955c8ac7e0541540c721dd35b7f1",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Vancouver Whitecaps",
     "decimal_odds": "1.6200",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T00:17:08.347Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/montreal-impact/preview/montreal-vs-vancouver-prediction-team-news-lineups_608443.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-c0d4598f44fd3e995c887aa4",
   "url": "/evidence/?pick=n-c0d4598f44fd3e995c887aa4",
   "quote_text": "Justin Reynolds is dealing with a sore quad, Diego Borges has an adductor issue and Kwaku Agyabeng is doubtful",
   "fragment_from": 3081,
   "fragment_to": 3191,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e39f8830737fce2607b9fa07ec2510029308f305a867d7959fb0a90ed32b68b1",
    "material_removed": false
   },
   "published_at": "2026-11-04T23:22:08.000Z",
   "detected_at": "2026-11-05T00:10:06.869Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-04T23:22:08.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T23:22:08.000Z",
    "detected_at": "2026-11-05T00:10:06.869Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-c91748d802fc0b62c9d99036",
   "url": "/evidence/?pick=n-c91748d802fc0b62c9d99036",
   "quote_text": "At SKC, Lasse Berg Johnsen, Seymour Reid, Moises Mosquera and Zorhan Bassong are all questionable",
   "fragment_from": 2957,
   "fragment_to": 3054,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e39f8830737fce2607b9fa07ec2510029308f305a867d7959fb0a90ed32b68b1",
    "material_removed": false
   },
   "published_at": "2026-11-04T23:22:08.000Z",
   "detected_at": "2026-11-05T00:10:06.869Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-04T23:22:08.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T23:22:08.000Z",
    "detected_at": "2026-11-05T00:10:06.869Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-208040996852e551fb87fa55",
   "url": "/evidence/?pick=n-208040996852e551fb87fa55",
   "quote_text": "A lower body injury will likely keep Elias Achouri out of the San Diego fold",
   "fragment_from": 2702,
   "fragment_to": 2778,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e39f8830737fce2607b9fa07ec2510029308f305a867d7959fb0a90ed32b68b1",
    "material_removed": false
   },
   "published_at": "2026-11-04T23:22:08.000Z",
   "detected_at": "2026-11-05T00:10:06.869Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-04T23:22:08.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T23:22:08.000Z",
    "detected_at": "2026-11-05T00:10:06.869Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-ba6c85fd5a2e9c888f22bb76",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-ba6c85fd5a2e9c888f22bb76",
   "quote_text": "We say: San Diego 3-0 Sporting Kansas City",
   "fragment_from": 3646,
   "fragment_to": 3688,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e39f8830737fce2607b9fa07ec2510029308f305a867d7959fb0a90ed32b68b1",
    "material_removed": false
   },
   "published_at": "2026-11-04T23:22:08.000Z",
   "detected_at": "2026-11-05T00:10:06.869Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-edf0a86696c5",
    "display_name": "San Diego FC — Sporting Kansas City",
    "competition_name": "MLS",
    "starts_at": "2026-11-08T00:00:00.000Z",
    "url": "/football/matches/san-diego-fc-vs-sporting-kansas-city-2026-11-08/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "San Diego FC 3-0 Sporting Kansas City",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-04T23:22:08.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T23:22:08.000Z",
    "detected_at": "2026-11-05T00:10:06.869Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "San Diego FC 3-0 Sporting Kansas City",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "3-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: San Diego FC 3-0 Sporting Kansas City"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 8 November 2026, 00:00 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 8 November 2026, 00:00 UTC."
   },
   "settlements": [
    {
     "operation_id": "96a43288515f908e8cfc33c02237980fe6fbabd9b76cd96bb2c133097372f850",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "San Diego FC",
     "decimal_odds": "1.4400",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T01:53:09.495Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-a2d3227269a5afeda2e11907",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-a2d3227269a5afeda2e11907",
   "quote_text": "We say: Philadelphia Union 2-0 Toronto",
   "fragment_from": 3934,
   "fragment_to": 3972,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/philadelphia-union/preview/philadelphia-vs-toronto-prediction-team-news-lineups_608434.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "21708aecfbce578b6ca56db112f715f7b157c8e02277090596f6af76e717755f",
    "material_removed": false
   },
   "published_at": "2026-11-04T22:38:21.000Z",
   "detected_at": "2026-11-04T23:10:21.863Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-e620be72bdeb",
    "display_name": "Philadelphia Union — Toronto FC",
    "competition_name": "MLS",
    "starts_at": "2026-11-07T21:00:00.000Z",
    "url": "/football/matches/philadelphia-union-vs-toronto-fc-2026-11-07/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "Philadelphia Union 2-0 Toronto FC",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-04T22:38:21.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T22:38:21.000Z",
    "detected_at": "2026-11-04T23:10:21.863Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Philadelphia Union 2-0 Toronto FC",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Philadelphia Union 2-0 Toronto FC"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 7 November 2026, 21:00 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
   },
   "settlements": [
    {
     "operation_id": "db41746840c21fbd8fcce2e8b435384e0b41df02cabd67b1e1d2dc0f54089dcf",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Philadelphia Union",
     "decimal_odds": "1.4274",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-05T23:57:36.216Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/philadelphia-union/preview/philadelphia-vs-toronto-prediction-team-news-lineups_608434.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-eb801b6b6129cda52f5b9d43",
   "url": "/evidence/?pick=n-eb801b6b6129cda52f5b9d43",
   "quote_text": "On the Atlanta side, Will Reilly is dealing with an ankle injury and Enea Mihaj is doubtful due to",
   "fragment_from": 3299,
   "fragment_to": 3397,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8cd089bc6aabfbb77efbf471ec30da325b6f537112e5daa92d1af88f1ba2df21",
    "material_removed": false
   },
   "published_at": "2026-11-04T22:51:59.000Z",
   "detected_at": "2026-11-04T23:10:20.502Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-04T22:51:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T22:51:59.000Z",
    "detected_at": "2026-11-04T23:10:20.502Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-d5c59200039c55dac1425dd2",
   "url": "/evidence/?pick=n-d5c59200039c55dac1425dd2",
   "quote_text": "With nothing to play for, it is unlikely we will see Justin Che on the field for the Red Bulls",
   "fragment_from": 2932,
   "fragment_to": 3026,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8cd089bc6aabfbb77efbf471ec30da325b6f537112e5daa92d1af88f1ba2df21",
    "material_removed": false
   },
   "published_at": "2026-11-04T22:51:59.000Z",
   "detected_at": "2026-11-04T23:10:20.502Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-04T22:51:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T22:51:59.000Z",
    "detected_at": "2026-11-04T23:10:20.502Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-393ce1ed523fdd9e2b78c192",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-393ce1ed523fdd9e2b78c192",
   "quote_text": "We say: New York Red Bulls 1-2 Atlanta United",
   "fragment_from": 3805,
   "fragment_to": 3850,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8cd089bc6aabfbb77efbf471ec30da325b6f537112e5daa92d1af88f1ba2df21",
    "material_removed": false
   },
   "published_at": "2026-11-04T22:51:59.000Z",
   "detected_at": "2026-11-04T23:10:20.502Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-ba35314f049e",
    "display_name": "New York Red Bulls — Atlanta United",
    "competition_name": "MLS",
    "starts_at": "2026-11-07T21:00:00.000Z",
    "url": "/football/matches/new-york-red-bulls-vs-atlanta-united-2026-11-07/",
    "scoreline": null,
    "condition": "scheduled"
   },
   "market_label": "Correct score",
   "outcome_label": "New York Red Bulls 1-2 Atlanta United",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "unknown",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-04T22:51:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-04T22:51:59.000Z",
    "detected_at": "2026-11-04T23:10:20.502Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "New York Red Bulls 1-2 Atlanta United",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: New York Red Bulls 1-2 Atlanta United"
   },
   "author_claim_outcome": {
    "result": "unknown",
    "scoreline": null,
    "data_status": "unknown",
    "cause": "kick-off 7 November 2026, 21:00 UTC",
    "methodology_version": "2.2",
    "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
   },
   "settlements": [
    {
     "operation_id": "5cac91b62213e63c4a515926fef392ef3ddc9d89a37e4aa0eb9576cb19aa5446",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Atlanta United",
     "decimal_odds": "3.3750",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-05T23:57:43.483Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-59d9f322872be3db6866af84",
   "url": "/evidence/?pick=n-59d9f322872be3db6866af84",
   "quote_text": "Fabio Balde is doubtful because of muscle tightness, Joaquin Panichelli remains sidelined",
   "fragment_from": 3108,
   "fragment_to": 3197,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "29e7b6c922aca5b81decf79893fc57649ad7870cabeb062b2eb4956ab663b011",
    "material_removed": false
   },
   "published_at": "2026-11-03T20:23:15.000Z",
   "detected_at": "2026-11-03T21:10:10.416Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-03T20:23:15.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-03T20:23:15.000Z",
    "detected_at": "2026-11-03T21:10:10.416Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-3e175a038ed290501cc0acaa",
   "url": "/evidence/?pick=n-3e175a038ed290501cc0acaa",
   "quote_text": "A leg injury may prevent Rafik Messali from featuring for Toulouse on Friday",
   "fragment_from": 2826,
   "fragment_to": 2902,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "29e7b6c922aca5b81decf79893fc57649ad7870cabeb062b2eb4956ab663b011",
    "material_removed": false
   },
   "published_at": "2026-11-03T20:23:15.000Z",
   "detected_at": "2026-11-03T21:10:10.416Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-03T20:23:15.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-03T20:23:15.000Z",
    "detected_at": "2026-11-03T21:10:10.416Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-1ba34d0392352fe5a5065db1",
   "url": "/evidence/?pick=n-1ba34d0392352fe5a5065db1",
   "quote_text": "we believe they will allow one too many good scoring opportunities on Friday.",
   "fragment_from": 3932,
   "fragment_to": 4009,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "29e7b6c922aca5b81decf79893fc57649ad7870cabeb062b2eb4956ab663b011",
    "material_removed": false
   },
   "published_at": "2026-11-03T20:23:15.000Z",
   "detected_at": "2026-11-03T21:10:10.416Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-03T20:23:15.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-03T20:23:15.000Z",
    "detected_at": "2026-11-03T21:10:10.416Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-765be835d13510be5dc94364",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-765be835d13510be5dc94364",
   "quote_text": "We say: Toulouse 2-1 Strasbourg",
   "fragment_from": 3764,
   "fragment_to": 3795,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "29e7b6c922aca5b81decf79893fc57649ad7870cabeb062b2eb4956ab663b011",
    "material_removed": false
   },
   "published_at": "2026-11-03T20:23:15.000Z",
   "detected_at": "2026-11-03T21:10:10.416Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-2313515db49a",
    "display_name": "Toulouse — RC Strasbourg",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-06T19:45:00.000Z",
    "url": "/football/matches/toulouse-vs-rc-strasbourg-2026-11-06/",
    "scoreline": "3-1",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Toulouse 2-1 RC Strasbourg",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-03T20:23:15.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-03T20:23:15.000Z",
    "detected_at": "2026-11-03T21:10:10.416Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Toulouse 2-1 RC Strasbourg",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-1",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Toulouse 2-1 RC Strasbourg"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "3-1",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Toulouse 3-1 RC Strasbourg."
   },
   "settlements": [
    {
     "operation_id": "93f07578d4bdf2ff7f6a259f17007b3cef7fdcb0e70ccc3cd0972c8b7b06316d",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Toulouse",
     "decimal_odds": "2.0500",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 10500,
     "executed_at": "2026-11-04T23:29:44.884Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-0803e14a85f05e9fe7b1310b",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-0803e14a85f05e9fe7b1310b",
   "quote_text": "We say: Monaco 2-0 Nordsjaelland",
   "fragment_from": 4133,
   "fragment_to": 4165,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/as-monaco/europa-conference-league/preview/monaco-vs-nordsjaelland-prediction-team-news-lineups_608291.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "01e79d5ab0b55f19d046b30fabbb8892d2a67e0b3cba77a13afa5650cc97cb2b",
    "material_removed": false
   },
   "published_at": "2026-11-02T22:28:00.000Z",
   "detected_at": "2026-11-02T23:10:21.476Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-045835f2ee6d",
    "display_name": "Monaco — Nordsjælland",
    "competition_name": "UEFA Conference League",
    "starts_at": "2026-11-05T20:00:00.000Z",
    "url": "/football/matches/monaco-vs-nordsjaelland-2026-11-05/",
    "scoreline": "2-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Monaco 2-0 Nordsjælland",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "win",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-02T22:28:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-02T22:28:00.000Z",
    "detected_at": "2026-11-02T23:10:21.476Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Monaco 2-0 Nordsjælland",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Monaco 2-0 Nordsjælland"
   },
   "author_claim_outcome": {
    "result": "win",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Matched: the final score was Monaco 2-0 Nordsjælland."
   },
   "settlements": [
    {
     "operation_id": "017c09e83f3ef64fb26ae04516f77cbf7a9ee3d4d84d6d262bb577e73fe2a325",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Monaco",
     "decimal_odds": "1.4400",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 4400,
     "executed_at": "2026-11-03T21:34:47.377Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/as-monaco/europa-conference-league/preview/monaco-vs-nordsjaelland-prediction-team-news-lineups_608291.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-11675aadd50a082f9a0c24a3",
   "url": "/evidence/?pick=n-11675aadd50a082f9a0c24a3",
   "quote_text": "Olympiacos will likely be without Kostas Fortounis because of an injury, while Yusuf Yazici",
   "fragment_from": 3083,
   "fragment_to": 3174,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "13a36043fa381fb141e179ab3074d0e865fa74ffa1f30d8ea795e5bfaf627520",
    "material_removed": false
   },
   "published_at": "2026-11-02T14:52:42.000Z",
   "detected_at": "2026-11-02T15:10:02.746Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-02T14:52:42.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-02T14:52:42.000Z",
    "detected_at": "2026-11-02T15:10:02.746Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-e88e3e8154a2d31c97f507d7",
   "url": "/evidence/?pick=n-e88e3e8154a2d31c97f507d7",
   "quote_text": "first-choice goalkeeper Brice Samba is questionable with a leg injury.",
   "fragment_from": 2856,
   "fragment_to": 2926,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "13a36043fa381fb141e179ab3074d0e865fa74ffa1f30d8ea795e5bfaf627520",
    "material_removed": false
   },
   "published_at": "2026-11-02T14:52:42.000Z",
   "detected_at": "2026-11-02T15:10:02.746Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-02T14:52:42.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-02T14:52:42.000Z",
    "detected_at": "2026-11-02T15:10:02.746Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-a897de752e29fe213be410a0",
   "url": "/evidence/?pick=n-a897de752e29fe213be410a0",
   "quote_text": "Ligue 1 top scorer Esteban Lepaul is unlikely to play on Wednesday as he recovers from an",
   "fragment_from": 2746,
   "fragment_to": 2835,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "13a36043fa381fb141e179ab3074d0e865fa74ffa1f30d8ea795e5bfaf627520",
    "material_removed": false
   },
   "published_at": "2026-11-02T14:52:42.000Z",
   "detected_at": "2026-11-02T15:10:02.746Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-02T14:52:42.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-02T14:52:42.000Z",
    "detected_at": "2026-11-02T15:10:02.746Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-815f4bfcb75e538accb32611",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-815f4bfcb75e538accb32611",
   "quote_text": "We say: Rennes 1-0 Olympiacos",
   "fragment_from": 3755,
   "fragment_to": 3784,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "13a36043fa381fb141e179ab3074d0e865fa74ffa1f30d8ea795e5bfaf627520",
    "material_removed": false
   },
   "published_at": "2026-11-02T14:52:42.000Z",
   "detected_at": "2026-11-02T15:10:02.746Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-2e0c5f836ca1",
    "display_name": "Stade Rennais — Olympiakos Piraeus",
    "competition_name": "UEFA Europa League",
    "starts_at": "2026-11-04T15:30:00.000Z",
    "url": "/football/matches/stade-rennais-vs-olympiakos-piraeus-2026-11-04/",
    "scoreline": "0-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Stade Rennais 1-0 Olympiakos Piraeus",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-02T14:52:42.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-02T14:52:42.000Z",
    "detected_at": "2026-11-02T15:10:02.746Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Stade Rennais 1-0 Olympiakos Piraeus",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Stade Rennais 1-0 Olympiakos Piraeus"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "0-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Stade Rennais 0-0 Olympiakos Piraeus."
   },
   "settlements": [
    {
     "operation_id": "96d3a15ba6b4878f8d89cab80e3ee1f846fd48722235e9362ab2d1e600bcea10",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Stade Rennais",
     "decimal_odds": "2.2000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-03T03:12:20.280Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-2c17dd9e86b9cb2ac9eb1d8d",
   "url": "/evidence/?pick=n-2c17dd9e86b9cb2ac9eb1d8d",
   "quote_text": "Georgian international Khvicha Kvaratskhelia is out because of a cruciate ligament tear.",
   "fragment_from": 4219,
   "fragment_to": 4307,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "dd44627c42eaacb84c55a6d2374c3ee904469c9af0a225b11d62266a556afbe7",
    "material_removed": false
   },
   "published_at": "2026-11-01T17:24:59.000Z",
   "detected_at": "2026-11-01T18:11:44.487Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-01T17:24:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-01T17:24:59.000Z",
    "detected_at": "2026-11-01T18:11:44.487Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-2947503b36638f718e4d1b29",
   "url": "/evidence/?pick=n-2947503b36638f718e4d1b29",
   "quote_text": "At PSG, Marquinhos and Ousmane Dembele are dealing with hamstring strains",
   "fragment_from": 4087,
   "fragment_to": 4160,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "dd44627c42eaacb84c55a6d2374c3ee904469c9af0a225b11d62266a556afbe7",
    "material_removed": false
   },
   "published_at": "2026-11-01T17:24:59.000Z",
   "detected_at": "2026-11-01T18:11:44.487Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-01T17:24:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-01T17:24:59.000Z",
    "detected_at": "2026-11-01T18:11:44.487Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-450d0321fae88f9778c746cb",
   "url": "/evidence/?pick=n-450d0321fae88f9778c746cb",
   "quote_text": "Several Villarreal players are questionable due to muscular problems",
   "fragment_from": 3617,
   "fragment_to": 3685,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "dd44627c42eaacb84c55a6d2374c3ee904469c9af0a225b11d62266a556afbe7",
    "material_removed": false
   },
   "published_at": "2026-11-01T17:24:59.000Z",
   "detected_at": "2026-11-01T18:11:44.487Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-11-01T17:24:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-01T17:24:59.000Z",
    "detected_at": "2026-11-01T18:11:44.487Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-21051a3e2c1b93cfa6863165",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-21051a3e2c1b93cfa6863165",
   "quote_text": "We say: Villarreal 1-3 Paris Saint-Germain",
   "fragment_from": 4922,
   "fragment_to": 4964,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "dd44627c42eaacb84c55a6d2374c3ee904469c9af0a225b11d62266a556afbe7",
    "material_removed": false
   },
   "published_at": "2026-11-01T17:24:59.000Z",
   "detected_at": "2026-11-01T18:11:44.487Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-737839aede15",
    "display_name": "Villarreal — Paris Saint-Germain",
    "competition_name": "UEFA Champions League",
    "starts_at": "2026-11-03T20:00:00.000Z",
    "url": "/football/matches/villarreal-vs-paris-saint-germain-2026-11-03/",
    "scoreline": "0-6",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Villarreal 1-3 Paris Saint-Germain",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-11-01T17:24:59.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-01T17:24:59.000Z",
    "detected_at": "2026-11-01T18:11:44.487Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Villarreal 1-3 Paris Saint-Germain",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-3",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Villarreal 1-3 Paris Saint-Germain"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "0-6",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Villarreal 0-6 Paris Saint-Germain."
   },
   "settlements": [
    {
     "operation_id": "2d36f3b574c3f16ada8ce1a1b1fa8a09659a53f4afd0841f8f095704f77c562c",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Paris Saint-Germain",
     "decimal_odds": "1.5988",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 5988,
     "executed_at": "2026-11-02T19:23:40.251Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-bd59dc27f71a4b9f580ed397",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-bd59dc27f71a4b9f580ed397",
   "quote_text": "We say: Strasbourg 2-0 Auxerre",
   "fragment_from": 3723,
   "fragment_to": 3753,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-auxerre-prediction-team-news-lineups_608034.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "d76c1daead21e4c7454bdee2190621d8ab464443eafd3c6b885740eefa8906e5",
    "material_removed": false
   },
   "published_at": "2026-10-30T02:34:32.000Z",
   "detected_at": "2026-10-30T03:10:22.354Z",
   "executed_at": "2026-11-01T11:16:22.182Z",
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-ce348ebba1d7",
    "display_name": "RC Strasbourg — Auxerre",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-01T14:00:00.000Z",
    "url": "/football/matches/rc-strasbourg-vs-auxerre-2026-11-01/",
    "scoreline": "5-1",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "RC Strasbourg 2-0 Auxerre",
   "odds_set": {
    "by_author": null,
    "our_snapshot": "10.0000",
    "our_snapshot_at": "2026-10-30T03:10:08.342Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "loss",
   "simulation_change_hundredths": -10000,
   "bankroll_after_hundredths": null,
   "executed_by": "ours",
   "series_label": "At an independent odds snapshot",
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-30T02:34:32.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-30T02:34:32.000Z",
    "detected_at": "2026-10-30T03:10:22.354Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "RC Strasbourg 2-0 Auxerre",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: RC Strasbourg 2-0 Auxerre"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "5-1",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was RC Strasbourg 5-1 Auxerre."
   },
   "settlements": [
    {
     "operation_id": "6227eb2e545dedc82b1c0760ced3e834b70855aa2ce570b6dd34e907cffb2db9",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Correct score",
     "choice": "RC Strasbourg 2-0 Auxerre",
     "decimal_odds": "10.0000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-01T11:16:22.182Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "29cb81c575668e1fae1e4da79d8a9aa85a5be245b9ad955af71afd4e2b78d2e6",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "RC Strasbourg",
     "decimal_odds": "1.8200",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 8200,
     "executed_at": "2026-11-01T11:16:23.081Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "settled_pick",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-auxerre-prediction-team-news-lineups_608034.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-9f09f783af04655eb9cc2867",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-9f09f783af04655eb9cc2867",
   "quote_text": "We say: Paris FC 1-2 Monaco",
   "fragment_from": 3694,
   "fragment_to": 3721,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-monaco-prediction-team-news-lineups_608036.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "d84e9e75ef068eedc923c9d2b32f887a93e64557d9bc78b0d47a6140429986f1",
    "material_removed": false
   },
   "published_at": "2026-10-30T02:38:41.000Z",
   "detected_at": "2026-10-30T03:10:21.514Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-57a71cb0caed",
    "display_name": "Paris FC — Monaco",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-01T16:15:00.000Z",
    "url": "/football/matches/paris-fc-vs-monaco-2026-11-01/",
    "scoreline": "3-1",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Paris FC 1-2 Monaco",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-30T02:38:41.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-30T02:38:41.000Z",
    "detected_at": "2026-10-30T03:10:21.514Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Paris FC 1-2 Monaco",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Paris FC 1-2 Monaco"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "3-1",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Paris FC 3-1 Monaco."
   },
   "settlements": [
    {
     "operation_id": "c09d3ece222081dcefaf109e1e9416055379d483fbc80b261e5f2920c939a03d",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Monaco",
     "decimal_odds": "2.9500",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-01T15:44:12.288Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-monaco-prediction-team-news-lineups_608036.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-c35ab9e27440aeed0923da8e",
   "url": "/evidence/?pick=n-c35ab9e27440aeed0923da8e",
   "quote_text": "On the Toulouse side, Sion Oppong is questionable due to a calf strain, as is Abu Francis because",
   "fragment_from": 2645,
   "fragment_to": 2742,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8638c5934a8572e43ed3e369be3166fc11a2e8eb80adec4ff33165f80261e54d",
    "material_removed": false
   },
   "published_at": "2026-10-30T01:49:33.000Z",
   "detected_at": "2026-10-30T02:10:04.703Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-30T01:49:33.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-30T01:49:33.000Z",
    "detected_at": "2026-10-30T02:10:04.703Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-c3263af8bc9a8917e81be094",
   "url": "/evidence/?pick=n-c3263af8bc9a8917e81be094",
   "quote_text": "A hip injury will likely keep Canadian defender Derek Cornelius from featuring for Marseille",
   "fragment_from": 2412,
   "fragment_to": 2504,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8638c5934a8572e43ed3e369be3166fc11a2e8eb80adec4ff33165f80261e54d",
    "material_removed": false
   },
   "published_at": "2026-10-30T01:49:33.000Z",
   "detected_at": "2026-10-30T02:10:04.703Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-30T01:49:33.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-30T01:49:33.000Z",
    "detected_at": "2026-10-30T02:10:04.703Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-d8a0c889c909b59a37884963",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-d8a0c889c909b59a37884963",
   "quote_text": "We say: Marseille 3-2 Toulouse",
   "fragment_from": 3201,
   "fragment_to": 3231,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8638c5934a8572e43ed3e369be3166fc11a2e8eb80adec4ff33165f80261e54d",
    "material_removed": false
   },
   "published_at": "2026-10-30T01:49:33.000Z",
   "detected_at": "2026-10-30T02:10:04.703Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-5fbdfb317815",
    "display_name": "Olympique de Marseille — Toulouse",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-01T19:45:00.000Z",
    "url": "/football/matches/olympique-de-marseille-vs-toulouse-2026-11-01/",
    "scoreline": "2-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Olympique de Marseille 3-2 Toulouse",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-30T01:49:33.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-30T01:49:33.000Z",
    "detected_at": "2026-10-30T02:10:04.703Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Olympique de Marseille 3-2 Toulouse",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "3-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Olympique de Marseille 3-2 Toulouse"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Olympique de Marseille 2-0 Toulouse."
   },
   "settlements": [
    {
     "operation_id": "bb4bcc80c62ad94b6228b07bb148ee3465aad66f5ec33477fe227911308e3f34",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Olympique de Marseille",
     "decimal_odds": "1.9100",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 9100,
     "executed_at": "2026-11-01T18:52:22.766Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-1d76c61002ee40626ea7ad12",
   "url": "/evidence/?pick=n-1d76c61002ee40626ea7ad12",
   "quote_text": "Keito Nakamura is eligible to return after missing their defeat versus PSG on Monday through a red",
   "fragment_from": 2757,
   "fragment_to": 2855,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "05ead8e3900d1558954b61ebe33cfd80ef30ada2899fcf2cd7b28cfda4a5ecae",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:19:21.000Z",
   "detected_at": "2026-10-29T00:10:07.580Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T23:19:21.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:19:21.000Z",
    "detected_at": "2026-10-29T00:10:07.580Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-7d13257e0b3413031c5afd2c",
   "url": "/evidence/?pick=n-7d13257e0b3413031c5afd2c",
   "quote_text": "Knee injuries will keep Mohamed Ouedraogo, Nicolas Tagliafico and Pavel Sulc sidelined",
   "fragment_from": 2647,
   "fragment_to": 2733,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "05ead8e3900d1558954b61ebe33cfd80ef30ada2899fcf2cd7b28cfda4a5ecae",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:19:21.000Z",
   "detected_at": "2026-10-29T00:10:07.580Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T23:19:21.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:19:21.000Z",
    "detected_at": "2026-10-29T00:10:07.580Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-84c578d882f8c913d1df2ef6",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-84c578d882f8c913d1df2ef6",
   "quote_text": "We say: Lyon 1-0 Angers",
   "fragment_from": 3409,
   "fragment_to": 3432,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "05ead8e3900d1558954b61ebe33cfd80ef30ada2899fcf2cd7b28cfda4a5ecae",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:19:21.000Z",
   "detected_at": "2026-10-29T00:10:07.580Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-625be040951a",
    "display_name": "Olympique Lyonnais — Angers",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-01T16:15:00.000Z",
    "url": "/football/matches/olympique-lyonnais-vs-angers-2026-11-01/",
    "scoreline": "2-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Olympique Lyonnais 1-0 Angers",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-28T23:19:21.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:19:21.000Z",
    "detected_at": "2026-10-29T00:10:07.580Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Olympique Lyonnais 1-0 Angers",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Olympique Lyonnais 1-0 Angers"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Olympique Lyonnais 2-0 Angers."
   },
   "settlements": [
    {
     "operation_id": "c490db41c2b1583168df188077c1a059d24cfd9bca820242795651ee5a2a1acf",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Olympique Lyonnais",
     "decimal_odds": "1.4000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 4000,
     "executed_at": "2026-10-31T13:21:36.851Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-cba9d8a26dbcc45c98247022",
   "url": "/evidence/?pick=n-cba9d8a26dbcc45c98247022",
   "quote_text": "Esteban Lepaul remains questionable with an ankle injury",
   "fragment_from": 3130,
   "fragment_to": 3186,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "38c85d976fc06dcf8dd141d12c2b46cc8fb7851ee0e3c7651c2e9f36939d1e66",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:23:16.000Z",
   "detected_at": "2026-10-29T00:10:04.272Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T23:23:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:23:16.000Z",
    "detected_at": "2026-10-29T00:10:04.272Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-ed88d1941bbe77ac6da176e2",
   "url": "/evidence/?pick=n-ed88d1941bbe77ac6da176e2",
   "quote_text": "A leg injury may prevent Ali Abdi from featuring for Nice on Saturday",
   "fragment_from": 2645,
   "fragment_to": 2714,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "38c85d976fc06dcf8dd141d12c2b46cc8fb7851ee0e3c7651c2e9f36939d1e66",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:23:16.000Z",
   "detected_at": "2026-10-29T00:10:04.272Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T23:23:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:23:16.000Z",
    "detected_at": "2026-10-29T00:10:04.272Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-7ccdf8d0f698632765fba401",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-7ccdf8d0f698632765fba401",
   "quote_text": "We say: Nice 1-2 Rennes",
   "fragment_from": 3785,
   "fragment_to": 3808,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "38c85d976fc06dcf8dd141d12c2b46cc8fb7851ee0e3c7651c2e9f36939d1e66",
    "material_removed": false
   },
   "published_at": "2026-10-28T23:23:16.000Z",
   "detected_at": "2026-10-29T00:10:04.272Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-ec6fbfaa0001",
    "display_name": "Nice — Stade Rennais",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-30T18:00:00.000Z",
    "url": "/football/matches/nice-vs-stade-rennais-2026-10-30/",
    "scoreline": "5-2",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Nice 1-2 Stade Rennais",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-28T23:23:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T23:23:16.000Z",
    "detected_at": "2026-10-29T00:10:04.272Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Nice 1-2 Stade Rennais",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Nice 1-2 Stade Rennais"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "5-2",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Nice 5-2 Stade Rennais."
   },
   "settlements": [
    {
     "operation_id": "ad46eec1d948d01653f521883fbd977d9df55ea2af6d912091a2e879454eb683",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Stade Rennais",
     "decimal_odds": "2.3700",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-10-30T05:30:00.278Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-2c9b7f414bd639e6b56e4288",
   "url": "/evidence/?pick=n-2c9b7f414bd639e6b56e4288",
   "quote_text": "Konate; Maronnier, Monfray, Diaz, Gozzi; Mille, Karim, Diop; Le Douaron, Ripart, Ifnaoui",
   "fragment_from": 3418,
   "fragment_to": 3506,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/troyes/preview/troyes-vs-le-mans-prediction-team-news-lineups_607900.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ce95f4ef948bde9114103c993ad5444088a19a13b4e8eb50f10535f859d6260",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:50:00.000Z",
   "detected_at": "2026-10-28T23:10:19.193Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:50:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:50:00.000Z",
    "detected_at": "2026-10-28T23:10:19.193Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-c9745c7c4471f823e9cbe95a",
   "url": "/evidence/?pick=n-c9745c7c4471f823e9cbe95a",
   "quote_text": "Djibril Sidibe may be forced out with a sore foot, Harold Voyer has a thigh strain",
   "fragment_from": 2994,
   "fragment_to": 3076,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/troyes/preview/troyes-vs-le-mans-prediction-team-news-lineups_607900.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ce95f4ef948bde9114103c993ad5444088a19a13b4e8eb50f10535f859d6260",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:50:00.000Z",
   "detected_at": "2026-10-28T23:10:19.193Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:50:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:50:00.000Z",
    "detected_at": "2026-10-28T23:10:19.193Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-ebf751739ac20948922786c3",
   "url": "/evidence/?pick=n-ebf751739ac20948922786c3",
   "quote_text": "An ankle issue will likely keep Anis Ouzenadji on the sidelines for Troyes this weekend",
   "fragment_from": 2621,
   "fragment_to": 2708,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/troyes/preview/troyes-vs-le-mans-prediction-team-news-lineups_607900.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ce95f4ef948bde9114103c993ad5444088a19a13b4e8eb50f10535f859d6260",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:50:00.000Z",
   "detected_at": "2026-10-28T23:10:19.193Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:50:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:50:00.000Z",
    "detected_at": "2026-10-28T23:10:19.193Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-f95cccd9e8c27cf36e8d834c",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-f95cccd9e8c27cf36e8d834c",
   "quote_text": "We say: Troyes 2-1 Le Mans",
   "fragment_from": 3638,
   "fragment_to": 3664,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/troyes/preview/troyes-vs-le-mans-prediction-team-news-lineups_607900.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ce95f4ef948bde9114103c993ad5444088a19a13b4e8eb50f10535f859d6260",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:50:00.000Z",
   "detected_at": "2026-10-28T23:10:19.193Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "not_supported",
   "cause": "",
   "cause_code": "not_supported",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:50:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:50:00.000Z",
    "detected_at": "2026-10-28T23:10:19.193Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-47a8e48658668bca2a79e5f4",
   "url": "/evidence/?pick=n-47a8e48658668bca2a79e5f4",
   "quote_text": "At Stade Brestois, Brendan Chardonnet has a sore calf, Romain Cagnon is doubtful with a knock",
   "fragment_from": 3023,
   "fragment_to": 3116,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ec06208689f75c46fd0b89f0f58a8d043d363c385d84f11b8c2448892807dc4",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:54:57.000Z",
   "detected_at": "2026-10-28T23:10:17.599Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:54:57.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:54:57.000Z",
    "detected_at": "2026-10-28T23:10:17.599Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-f29a3f724bbd5de885bfc805",
   "url": "/evidence/?pick=n-f29a3f724bbd5de885bfc805",
   "quote_text": "Because of physical discomfort, Lorient may be without Mohamed Bamba on matchday nine",
   "fragment_from": 2645,
   "fragment_to": 2730,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ec06208689f75c46fd0b89f0f58a8d043d363c385d84f11b8c2448892807dc4",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:54:57.000Z",
   "detected_at": "2026-10-28T23:10:17.599Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T22:54:57.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:54:57.000Z",
    "detected_at": "2026-10-28T23:10:17.599Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-b8bdccdb6e67f38316ef9ca4",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-b8bdccdb6e67f38316ef9ca4",
   "quote_text": "We say: Lorient 2-2 Brest",
   "fragment_from": 3616,
   "fragment_to": 3641,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1ec06208689f75c46fd0b89f0f58a8d043d363c385d84f11b8c2448892807dc4",
    "material_removed": false
   },
   "published_at": "2026-10-28T22:54:57.000Z",
   "detected_at": "2026-10-28T23:10:17.599Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-79e1a08969ba",
    "display_name": "Lorient — Stade Brestois",
    "competition_name": "Ligue 1",
    "starts_at": "2026-11-02T19:45:00.000Z",
    "url": "/football/matches/lorient-vs-stade-brestois-2026-11-02/",
    "scoreline": "0-2",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Lorient 2-2 Stade Brestois",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-28T22:54:57.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T22:54:57.000Z",
    "detected_at": "2026-10-28T23:10:17.599Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Lorient 2-2 Stade Brestois",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Lorient 2-2 Stade Brestois"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "0-2",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Lorient 0-2 Stade Brestois."
   },
   "settlements": [
    {
     "operation_id": "9e7e595f180ca39c0c9c655cca3a4452007dbe83eea37d638bb80d737197cfe3",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "draw",
     "decimal_odds": "3.3000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-11-02T07:17:58.320Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-8466edf13411db958fc29382",
   "url": "/evidence/?pick=n-8466edf13411db958fc29382",
   "quote_text": "At PSG, Ousmane Dembele and Marquinhos will miss this match with hamstring issues",
   "fragment_from": 3425,
   "fragment_to": 3506,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "a89458e9f6ebc7ad2e395d84d584976204111f994f09340b1207c67de1a5f3f8",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:49:01.000Z",
   "detected_at": "2026-10-28T02:09:59.834Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T01:49:01.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:49:01.000Z",
    "detected_at": "2026-10-28T02:09:59.834Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-11f400c0e8bb8b82f6f1fc83",
   "url": "/evidence/?pick=n-11f400c0e8bb8b82f6f1fc83",
   "quote_text": "Due to adductor pain, Le Havre could be missing Timothee Pembele",
   "fragment_from": 3023,
   "fragment_to": 3087,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "a89458e9f6ebc7ad2e395d84d584976204111f994f09340b1207c67de1a5f3f8",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:49:01.000Z",
   "detected_at": "2026-10-28T02:09:59.834Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T01:49:01.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:49:01.000Z",
    "detected_at": "2026-10-28T02:09:59.834Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-16a464d42bd67e87edd5cac1",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-16a464d42bd67e87edd5cac1",
   "quote_text": "We say: Le Havre 0-2 Paris Saint-Germain",
   "fragment_from": 4061,
   "fragment_to": 4101,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "a89458e9f6ebc7ad2e395d84d584976204111f994f09340b1207c67de1a5f3f8",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:49:01.000Z",
   "detected_at": "2026-10-28T02:09:59.834Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-093cac49e8f6",
    "display_name": "Le Havre — Paris Saint-Germain",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-30T18:00:00.000Z",
    "url": "/football/matches/le-havre-vs-paris-saint-germain-2026-10-30/",
    "scoreline": "1-5",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Le Havre 0-2 Paris Saint-Germain",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-28T01:49:01.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:49:01.000Z",
    "detected_at": "2026-10-28T02:09:59.834Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Le Havre 0-2 Paris Saint-Germain",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "0-2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Le Havre 0-2 Paris Saint-Germain"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "1-5",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Le Havre 1-5 Paris Saint-Germain."
   },
   "settlements": [
    {
     "operation_id": "76b65aefe6c18e8353149f72043aeadba4f1610e1bce9dc0bc6b98dc970ba0c5",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Paris Saint-Germain",
     "decimal_odds": "1.2400",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 2400,
     "executed_at": "2026-10-30T05:46:54.431Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-fcc7856bb0be9bffc4a70c92",
   "url": "/evidence/?pick=n-fcc7856bb0be9bffc4a70c92",
   "quote_text": "At Lens, Ismaelo Gabiou is recovering from knee surgery, while Jonathan Gradit and Abdallah ",
   "fragment_from": 3182,
   "fragment_to": 3274,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "21d95ab912edc6d40740a012a7a84c6a1cd7ec5c418364a7370186a88621f374",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:56:06.000Z",
   "detected_at": "2026-10-28T02:09:58.480Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T01:56:06.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:56:06.000Z",
    "detected_at": "2026-10-28T02:09:58.480Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-549478560abc34f6495603d3",
   "url": "/evidence/?pick=n-549478560abc34f6495603d3",
   "quote_text": "A foot injury will likely keep Ayase Ueda sidelined for Lille, while Tiago Santos and Osame Sahraoui",
   "fragment_from": 2714,
   "fragment_to": 2814,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "21d95ab912edc6d40740a012a7a84c6a1cd7ec5c418364a7370186a88621f374",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:56:06.000Z",
   "detected_at": "2026-10-28T02:09:58.480Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T01:56:06.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:56:06.000Z",
    "detected_at": "2026-10-28T02:09:58.480Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-79952d29b44da6660287c9ef",
   "url": "/evidence/?pick=n-79952d29b44da6660287c9ef",
   "quote_text": "Lille could temporarily move into first place in Ligue 1 on Friday with a win over Lens and some help",
   "fragment_from": 253,
   "fragment_to": 354,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "21d95ab912edc6d40740a012a7a84c6a1cd7ec5c418364a7370186a88621f374",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:56:06.000Z",
   "detected_at": "2026-10-28T02:09:58.480Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-28T01:56:06.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:56:06.000Z",
    "detected_at": "2026-10-28T02:09:58.480Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-034eed5246de2c55a8f69393",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-034eed5246de2c55a8f69393",
   "quote_text": "We say: Lille 1-0 Lens",
   "fragment_from": 3942,
   "fragment_to": 3964,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "21d95ab912edc6d40740a012a7a84c6a1cd7ec5c418364a7370186a88621f374",
    "material_removed": false
   },
   "published_at": "2026-10-28T01:56:06.000Z",
   "detected_at": "2026-10-28T02:09:58.480Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-0154b7c67113",
    "display_name": "Lille — RC Lens",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-30T20:05:00.000Z",
    "url": "/football/matches/lille-vs-rc-lens-2026-10-30/",
    "scoreline": "1-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Lille 1-0 RC Lens",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "win",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-28T01:56:06.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-28T01:56:06.000Z",
    "detected_at": "2026-10-28T02:09:58.480Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Lille 1-0 RC Lens",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-0",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Lille 1-0 RC Lens"
   },
   "author_claim_outcome": {
    "result": "win",
    "scoreline": "1-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Matched: the final score was Lille 1-0 RC Lens."
   },
   "settlements": [
    {
     "operation_id": "9d32d5b0e3724e42e655abfa3e0626ec68bb387ddd3d99ef31b24fc060f8c205",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Lille",
     "decimal_odds": "2.4000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 14000,
     "executed_at": "2026-10-30T05:06:58.141Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-80028be9b8b796890149cb0a",
   "url": "/evidence/?pick=n-80028be9b8b796890149cb0a",
   "quote_text": "Lyon could be without Mohamed Ouedraogo and Nicolas Tagliafico, who have knee injuries",
   "fragment_from": 4113,
   "fragment_to": 4199,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "cbc337e4121f156ead56997b9bd9cb522d240a9b78ef97b246a7c70a186b521a",
    "material_removed": false
   },
   "published_at": "2026-10-23T01:02:27.000Z",
   "detected_at": "2026-10-23T02:10:18.093Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T01:02:27.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T01:02:27.000Z",
    "detected_at": "2026-10-23T02:10:18.093Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-f7f2d9f3dc336ffb83868cfd",
   "url": "/evidence/?pick=n-f7f2d9f3dc336ffb83868cfd",
   "quote_text": "Ousmane Dembele and Marquinhos are out for a few weeks due to thigh injuries.",
   "fragment_from": 3675,
   "fragment_to": 3752,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "cbc337e4121f156ead56997b9bd9cb522d240a9b78ef97b246a7c70a186b521a",
    "material_removed": false
   },
   "published_at": "2026-10-23T01:02:27.000Z",
   "detected_at": "2026-10-23T02:10:18.093Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T01:02:27.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T01:02:27.000Z",
    "detected_at": "2026-10-23T02:10:18.093Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-e11001a11bfdf5ebdc0ad507",
   "url": "/evidence/?pick=n-e11001a11bfdf5ebdc0ad507",
   "quote_text": "A torn ACL is expected to end the campaign for PSG’s Khvicha Kvaratskhelia",
   "fragment_from": 3593,
   "fragment_to": 3667,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "cbc337e4121f156ead56997b9bd9cb522d240a9b78ef97b246a7c70a186b521a",
    "material_removed": false
   },
   "published_at": "2026-10-23T01:02:27.000Z",
   "detected_at": "2026-10-23T02:10:18.093Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T01:02:27.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T01:02:27.000Z",
    "detected_at": "2026-10-23T02:10:18.093Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-79f7d0771501f6784308114f",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-79f7d0771501f6784308114f",
   "quote_text": "We say: Paris Saint-Germain 2-1 Lyon",
   "fragment_from": 4773,
   "fragment_to": 4809,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "cbc337e4121f156ead56997b9bd9cb522d240a9b78ef97b246a7c70a186b521a",
    "material_removed": false
   },
   "published_at": "2026-10-23T01:02:27.000Z",
   "detected_at": "2026-10-23T02:10:18.093Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-4bf1ea244970",
    "display_name": "Paris Saint-Germain — Olympique Lyonnais",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-26T19:30:00.000Z",
    "url": "/football/matches/paris-saint-germain-vs-olympique-lyonnais-2026-10-26/",
    "scoreline": "2-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Paris Saint-Germain 2-1 Olympique Lyonnais",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-23T01:02:27.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T01:02:27.000Z",
    "detected_at": "2026-10-23T02:10:18.093Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Paris Saint-Germain 2-1 Olympique Lyonnais",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "2-1",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Paris Saint-Germain 2-1 Olympique Lyonnais"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Paris Saint-Germain 2-0 Olympique Lyonnais."
   },
   "settlements": [
    {
     "operation_id": "f6efbf884f27842434f2570f0b507dd83317e058b93a75a0fe879930d620ee6f",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Paris Saint-Germain",
     "decimal_odds": "1.4450",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 4450,
     "executed_at": "2026-10-24T15:02:26.679Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-cca92ac99090649c3ca36777",
   "url": "/evidence/?pick=n-cca92ac99090649c3ca36777",
   "quote_text": "Hirving Lozano and Kyogo Furuhashi are doubtful",
   "fragment_from": 3098,
   "fragment_to": 3145,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/news/los-angeles-vs-la-galaxy-prediction-team-news-lineups_607505.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "edb02cdf8741a89294d73202a553ebf1332c21da2cd4ce507d761c65e2d5fcee",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:02:00.000Z",
   "detected_at": "2026-10-23T01:10:08.048Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:02:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:02:00.000Z",
    "detected_at": "2026-10-23T01:10:08.048Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-624e97f4df794625735a7ba7",
   "url": "/evidence/?pick=n-624e97f4df794625735a7ba7",
   "quote_text": "Isaiah Parente has a sore ankle",
   "fragment_from": 3059,
   "fragment_to": 3090,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/news/los-angeles-vs-la-galaxy-prediction-team-news-lineups_607505.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "edb02cdf8741a89294d73202a553ebf1332c21da2cd4ce507d761c65e2d5fcee",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:02:00.000Z",
   "detected_at": "2026-10-23T01:10:08.048Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:02:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:02:00.000Z",
    "detected_at": "2026-10-23T01:10:08.048Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-b7e71395b02775192e907844",
   "url": "/evidence/?pick=n-b7e71395b02775192e907844",
   "quote_text": "Timothy Tillman may be sidelined for LAFC",
   "fragment_from": 2733,
   "fragment_to": 2774,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/news/los-angeles-vs-la-galaxy-prediction-team-news-lineups_607505.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "edb02cdf8741a89294d73202a553ebf1332c21da2cd4ce507d761c65e2d5fcee",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:02:00.000Z",
   "detected_at": "2026-10-23T01:10:08.048Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:02:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:02:00.000Z",
    "detected_at": "2026-10-23T01:10:08.048Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-81eddfa95fd817b614f0d388",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-81eddfa95fd817b614f0d388",
   "quote_text": "We say: Los Angeles FC 2-2 Los Angeles Galaxy",
   "fragment_from": 3651,
   "fragment_to": 3696,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/news/los-angeles-vs-la-galaxy-prediction-team-news-lineups_607505.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "edb02cdf8741a89294d73202a553ebf1332c21da2cd4ce507d761c65e2d5fcee",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:02:00.000Z",
   "detected_at": "2026-10-23T01:10:08.048Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "not_supported",
   "cause": "",
   "cause_code": "not_supported",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:02:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:02:00.000Z",
    "detected_at": "2026-10-23T01:10:08.048Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-3e6c17ac7f030fde0cfce32e",
   "url": "/evidence/?pick=n-3e6c17ac7f030fde0cfce32e",
   "quote_text": "Sebastian Nanasi and Ismael Doukoure could be sidelined through injuries",
   "fragment_from": 3253,
   "fragment_to": 3325,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "59b4b82e93fd39037f349f71c45bb9abb2802b4529ea8a18cb8602122402e204",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:14:34.000Z",
   "detected_at": "2026-10-23T01:10:07.360Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:14:34.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:14:34.000Z",
    "detected_at": "2026-10-23T01:10:07.360Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-88a251798b4e97e4f8488601",
   "url": "/evidence/?pick=n-88a251798b4e97e4f8488601",
   "quote_text": "Esteban Lepaul, could be forced out of this clash due to an ankle injury",
   "fragment_from": 2880,
   "fragment_to": 2952,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "59b4b82e93fd39037f349f71c45bb9abb2802b4529ea8a18cb8602122402e204",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:14:34.000Z",
   "detected_at": "2026-10-23T01:10:07.360Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-23T00:14:34.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:14:34.000Z",
    "detected_at": "2026-10-23T01:10:07.360Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-171f5a5dfa2eda1773de32ee",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-171f5a5dfa2eda1773de32ee",
   "quote_text": "We say: Rennes 1-1 Strasbourg",
   "fragment_from": 3855,
   "fragment_to": 3884,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "59b4b82e93fd39037f349f71c45bb9abb2802b4529ea8a18cb8602122402e204",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:14:34.000Z",
   "detected_at": "2026-10-23T01:10:07.360Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-d194cb14109e",
    "display_name": "Stade Rennais — RC Strasbourg",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-25T16:15:00.000Z",
    "url": "/football/matches/stade-rennais-vs-rc-strasbourg-2026-10-25/",
    "scoreline": "3-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Stade Rennais 1-1 RC Strasbourg",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-23T00:14:34.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:14:34.000Z",
    "detected_at": "2026-10-23T01:10:07.360Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Stade Rennais 1-1 RC Strasbourg",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-1",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Stade Rennais 1-1 RC Strasbourg"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "3-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was Stade Rennais 3-0 RC Strasbourg."
   },
   "settlements": [
    {
     "operation_id": "b8699011c87ef64d4adca5132fc20cd9ca1ece84d92035d727120eaea4c13ffb",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "draw",
     "decimal_odds": "4.2400",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-10-24T09:37:21.699Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-c29aedb6eb5a0b02e0d05993",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-c29aedb6eb5a0b02e0d05993",
   "quote_text": "We say: Monaco 1-1 Lille",
   "fragment_from": 4205,
   "fragment_to": 4229,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-lille-prediction-team-news-lineups_607508.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "d1764e7e134fa9d802838b163467d95afc93d14af94c3cb0f31bca1428cf4444",
    "material_removed": false
   },
   "published_at": "2026-10-23T00:50:05.000Z",
   "detected_at": "2026-10-23T01:10:05.398Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-4e7825289b07",
    "display_name": "Monaco — Lille",
    "competition_name": "Ligue 1",
    "starts_at": "2026-10-25T14:00:00.000Z",
    "url": "/football/matches/monaco-vs-lille-2026-10-25/",
    "scoreline": "1-1",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "Monaco 1-1 Lille",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "win",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-23T00:50:05.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-23T00:50:05.000Z",
    "detected_at": "2026-10-23T01:10:05.398Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "Monaco 1-1 Lille",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "1-1",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: Monaco 1-1 Lille"
   },
   "author_claim_outcome": {
    "result": "win",
    "scoreline": "1-1",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Matched: the final score was Monaco 1-1 Lille."
   },
   "settlements": [
    {
     "operation_id": "8845af1d78825701f9ab2310b5f65702b52f8eb6ca362370cebaf3b59da0db1f",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "draw",
     "decimal_odds": "3.4400",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "win",
     "result_words": "Won",
     "change_hundredths": 24400,
     "executed_at": "2026-10-24T09:37:21.769Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-lille-prediction-team-news-lineups_607508.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-5eb7ef4736ca5e6cc4e22267",
   "url": "/evidence/?pick=n-5eb7ef4736ca5e6cc4e22267",
   "quote_text": "At Miami, Tadeo Allende is still dealing with a knee issue, Mateo Silvetti has a sore shoulder,",
   "fragment_from": 3161,
   "fragment_to": 3256,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:21:16.000Z",
   "detected_at": "2026-10-21T23:10:31.581Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:21:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-f9cfaa47c6cb9dc09491bf80",
   "url": "/evidence/?pick=n-f9cfaa47c6cb9dc09491bf80",
   "quote_text": "The Red Bulls will be without goalkeeper AJ Marcucci on Saturday as he continues to recover from",
   "fragment_from": 2807,
   "fragment_to": 2903,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:21:16.000Z",
   "detected_at": "2026-10-21T23:10:31.581Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:21:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-fcd7f24aaef94749af11d3bd",
   "url": "/evidence/?pick=n-fcd7f24aaef94749af11d3bd",
   "quote_text": "Miami seem to have dug out of their funk and are looking like a strong favourite to retain their MLS title.",
   "fragment_from": 1555,
   "fragment_to": 1662,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:21:16.000Z",
   "detected_at": "2026-10-21T23:10:31.581Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:21:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-ac0b03d7b079f82b583dd2e7",
   "url": "/evidence/?pick=n-ac0b03d7b079f82b583dd2e7",
   "quote_text": "The New York Red Bulls will hope to remain above the Eastern Conference playoff line",
   "fragment_from": 316,
   "fragment_to": 400,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:21:16.000Z",
   "detected_at": "2026-10-21T23:10:31.581Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:21:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-0498a6ec42cc8d3acdf19c7f",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-0498a6ec42cc8d3acdf19c7f",
   "quote_text": "We say: New York Red Bulls 0-3 Inter Miami",
   "fragment_from": 3809,
   "fragment_to": 3851,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:21:16.000Z",
   "detected_at": "2026-10-21T23:10:31.581Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": {
    "event_id": "s-450a933485e0",
    "display_name": "New York Red Bulls — Inter Miami CF",
    "competition_name": "MLS",
    "starts_at": "2026-10-24T21:30:00.000Z",
    "url": "/football/matches/new-york-red-bulls-vs-inter-miami-cf-2026-10-24/",
    "scoreline": "2-0",
    "condition": "finished"
   },
   "market_label": "Correct score",
   "outcome_label": "New York Red Bulls 0-3 Inter Miami CF",
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": "loss",
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "provenance": "recorded_pre_match",
   "provenance_words": "Recorded by us before kick-off",
   "dates": {
    "fragment_at": "2026-10-21T22:21:16.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "recorded_before_kickoff",
   "origin_detail": null,
   "origin_words": "Recorded by us before kick-off",
   "added_on": null,
   "late_publication": null,
   "author_claim": {
    "market_label": "Correct score",
    "choice": "New York Red Bulls 0-3 Inter Miami CF",
    "author_odds": null,
    "market_key": "correct_score_market",
    "choice_key": "0-3",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Correct score: New York Red Bulls 0-3 Inter Miami CF"
   },
   "author_claim_outcome": {
    "result": "loss",
    "scoreline": "2-0",
    "data_status": "measured",
    "cause": null,
    "methodology_version": "2.2",
    "in_words": "Did not match: the final score was New York Red Bulls 2-0 Inter Miami CF."
   },
   "settlements": [
    {
     "operation_id": "c520ab61fe45713ad421b451fe0dfd8d7b3a15de4152c72178f8b904798b5a0b",
     "series_key": "derived_series",
     "series_label": "Forecast Record reconstruction from the predicted score",
     "derived": true,
     "site_simulation": true,
     "author_words": false,
     "market_label": "1X2, match result",
     "choice": "Inter Miami CF",
     "decimal_odds": "1.8696",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": "loss",
     "result_words": "Lost",
     "change_hundredths": -10000,
     "executed_at": "2026-10-24T00:53:45.291Z",
     "methodology_version": "2.2",
     "on_claim_market": false,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "Joel Lefevre",
    "publisher": "Sports Mole",
    "forecaster": "Joel Lefevre",
    "forecaster_named_in_text": false,
    "basis": null,
    "status": "not_named",
    "status_words": "Attributed by the byline",
    "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
    "evidence_fragment": null,
    "material_url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-227670125e72aca247db0e5f",
   "url": "/evidence/?pick=n-227670125e72aca247db0e5f",
   "quote_text": "A hamstring strain may keep Abu Francis out of the Toulouse lineup on Saturday",
   "fragment_from": 2753,
   "fragment_to": 2831,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-troyes-prediction-team-news-lineups_607390.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "2285d2b6dfa4bc2d7c4384a982b5fc59dab12ea2c4a69306b839f9703d2f4fc3",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:34:00.000Z",
   "detected_at": "2026-10-21T23:10:29.638Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:34:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:34:00.000Z",
    "detected_at": "2026-10-21T23:10:29.638Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-9618253fd30713d30fc77dff",
   "url": "/evidence/?pick=n-9618253fd30713d30fc77dff",
   "quote_text": "On Saturday, Toulouse can extend their unbeaten run versus Troyes to 13 matches across all competitions",
   "fragment_from": 1410,
   "fragment_to": 1513,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-troyes-prediction-team-news-lineups_607390.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "2285d2b6dfa4bc2d7c4384a982b5fc59dab12ea2c4a69306b839f9703d2f4fc3",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:34:00.000Z",
   "detected_at": "2026-10-21T23:10:29.638Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:34:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:34:00.000Z",
    "detected_at": "2026-10-21T23:10:29.638Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-36459a057adbebe4b320027d",
   "url": "/evidence/?pick=n-36459a057adbebe4b320027d",
   "quote_text": "Toulouse can claim consecutive Ligue 1 triumphs for the first time this season when they meet Troyes",
   "fragment_from": 302,
   "fragment_to": 402,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-troyes-prediction-team-news-lineups_607390.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "2285d2b6dfa4bc2d7c4384a982b5fc59dab12ea2c4a69306b839f9703d2f4fc3",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:34:00.000Z",
   "detected_at": "2026-10-21T23:10:29.638Z",
   "executed_at": null,
   "statement_class": "opinion",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:34:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:34:00.000Z",
    "detected_at": "2026-10-21T23:10:29.638Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-c69e859c2382d0e175d7178d",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-c69e859c2382d0e175d7178d",
   "quote_text": "We say: Toulouse 3-1 Troyes",
   "fragment_from": 3566,
   "fragment_to": 3593,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-troyes-prediction-team-news-lineups_607390.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "2285d2b6dfa4bc2d7c4384a982b5fc59dab12ea2c4a69306b839f9703d2f4fc3",
    "material_removed": false
   },
   "published_at": "2026-10-21T22:34:00.000Z",
   "detected_at": "2026-10-21T23:10:29.638Z",
   "executed_at": null,
   "statement_class": "score_forecast",
   "status": "not_supported",
   "cause": "",
   "cause_code": "not_supported",
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-21T22:34:00.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-21T22:34:00.000Z",
    "detected_at": "2026-10-21T23:10:29.638Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": null,
   "correction": null
  },
  {
   "observation_id": "n-1a1627d5455542feff426387",
   "url": "/evidence/?pick=n-1a1627d5455542feff426387",
   "quote_text": "Selvik; Lala, Tousart, Lloris, Locko; Chotard, Magnetti; Balde, Doumbia, Mboup; Ajorque",
   "fragment_from": 3478,
   "fragment_to": 3565,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.sportsmole.co.uk/football/brest/preview/brest-vs-nice-prediction-team-news-lineups_607322.html",
    "display_name": null,
    "speaker": "Joel Lefevre",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "f24b758092614173e080b0649a48f1d88daf26ba88ad0766371c97a7cd453982",
    "material_removed": false
   },
   "published_at": "2026-10-20T20:41:28.000Z",
   "detected_at": "2026-10-20T21:10:13.474Z",
   "executed_at": null,
   "statement_class": "no_event",
   "status": "recognised",
   "cause": null,
   "cause_code": null,
   "event": null,
   "market_label": null,
   "outcome_label": null,
   "odds_set": {
    "by_author": null,
    "our_snapshot": null,
    "our_snapshot_at": null,
    "our_snapshot_source": null,
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": null,
   "result": null,
   "simulation_change_hundredths": null,
   "bankroll_after_hundredths": null,
   "executed_by": null,
   "series_label": null,
   "withdrawn": false,
   "dates": {
    "fragment_at": "2026-10-20T20:41:28.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-10-20T20:41:28.000Z",
    "detected_at": "2026-10-20T21:10:13.474Z",
    "archive_snapshot_at": null,
    "flags": [],
    "flag_words": null,
    "rule_version": "1.1"
   },
   "origin": "source_stated_date",
   "origin_detail": "no_match_linked",
   "origin_words": "Date as stated by the source; no match is linked to this statement",
   "added_on": null,
   "late_publication": null,
   "author_claim": null,
   "author_claim_outcome": {
    "result": null,
    "scoreline": null,
    "data_status": "unknown",
    "cause": "the statement was not read as a pick that can be settled",
    "methodology_version": "2.2",
    "in_words": "No outcome: the statement was not read as a pick that can be settled."
   },
   "settlements": [],
   "corrections": [],
   "funnel_stage": "statement",
   "authorship": null,
   "correction": null
  }
 ],
 "excluded_from_feed": {
  "ads": 0,
  "service": 4,
  "ruleset_version": "3"
 },
 "standing": {
  "titles": [
   {
    "code_name": "CS-10",
    "display_name": "Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "all",
    "bucket": "Exact score called",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026",
    "rationale": "Correct score 2–0 called before the match; 7 other tipsters and sources named an exact score on this match, 1 right. Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-cs-10-all-event",
    "alt": "Joel Lefevre · Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-exact-score-called\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-m-light.svg\" alt=\"Joel Lefevre · Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026 · Tracked by Forecast Record\" width=\"795\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 3 Feb 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-11-05",
    "evidence_through": "2026-11-05",
    "earned_at": "2026-11-05",
    "published_at": "2026-11-06",
    "visible_until": "2027-02-03",
    "badge_label": "Exact score 2–0 · 5 Nov",
    "scope_words": null,
    "title_id": "zk-227a92c97fe42dbb789c",
    "evidence_items": [
     {
      "nid": "n-0803e14a85f05e9fe7b1310b",
      "data": "2026-11-05",
      "match": "Monaco v Nordsjælland",
      "said_text": "Correct score: Monaco 2-0 Nordsjælland",
      "outcome_label": "score right · result right",
      "evidence_price": null,
      "comparison": "7 other tipsters and sources named an exact score on this match, 1 right",
      "url": "/authors/joel-lefevre/picks/4/#pick-n-0803e14a85f05e9fe7b1310b"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1080,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1080,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 795,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 795,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 620,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 620,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-all-event-card.svg"
    },
    "profile_anchor": "title-227a92c97fe4",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 0,
     "unpriced": 1,
     "probability": null,
     "one_in": null,
     "words": "No recorded prices for these picks, so the chance cannot be measured."
    },
    "embed_anchor": "title-exact-score-called"
   },
   {
    "code_name": "CS-10",
    "display_name": "Exact score 1–0 · Lille v RC Lens · 30 Oct 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "z-d7f4b9b423",
    "bucket": "Exact score called",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Exact score 1–0 · Lille v RC Lens · 30 Oct 2026",
    "rationale": "Correct score 1–0 called before the match; 6 other tipsters and sources named an exact score on this match, 1 right. Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-cs-10-z-d7f4b9b423-event",
    "alt": "Joel Lefevre · Exact score 1–0 · Lille v RC Lens · 30 Oct 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-exact-score-called-exact-score-called\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-m-light.svg\" alt=\"Joel Lefevre · Exact score 1–0 · Lille v RC Lens · 30 Oct 2026 · Tracked by Forecast Record\" width=\"754\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 28 Jan 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-10-30",
    "evidence_through": "2026-10-30",
    "earned_at": "2026-10-30",
    "published_at": "2026-10-31",
    "visible_until": "2027-01-28",
    "badge_label": "Exact score 1–0 · 30 Oct",
    "scope_words": null,
    "title_id": "zk-d7f4b9b4232143bb7129",
    "evidence_items": [
     {
      "nid": "n-034eed5246de2c55a8f69393",
      "data": "2026-10-30",
      "match": "Lille v RC Lens",
      "said_text": "Correct score: Lille 1-0 RC Lens",
      "outcome_label": "score right · result right",
      "evidence_price": null,
      "comparison": "6 other tipsters and sources named an exact score on this match, 1 right",
      "url": "/authors/joel-lefevre/picks/4/#pick-n-034eed5246de2c55a8f69393"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1025,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1025,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 754,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 754,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 588,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 588,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-d7f4b9b423-event-card.svg"
    },
    "profile_anchor": "title-d7f4b9b42321",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 0,
     "unpriced": 1,
     "probability": null,
     "one_in": null,
     "words": "No recorded prices for these picks, so the chance cannot be measured."
    },
    "embed_anchor": "title-exact-score-called-exact-score-called"
   },
   {
    "code_name": "CS-10",
    "display_name": "Exact score 1–1 · Monaco v Lille · 25 Oct 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "z-13387032fa",
    "bucket": "Exact score called",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Exact score 1–1 · Monaco v Lille · 25 Oct 2026",
    "rationale": "Correct score 1–1 called before the match; 4 other tipsters and sources named an exact score on this match, 2 right. Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-cs-10-z-13387032fa-event",
    "alt": "Joel Lefevre · Exact score 1–1 · Monaco v Lille · 25 Oct 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-exact-score-called-exact-score-called-2\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-m-light.svg\" alt=\"Joel Lefevre · Exact score 1–1 · Monaco v Lille · 25 Oct 2026 · Tracked by Forecast Record\" width=\"746\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 23 Jan 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-10-25",
    "evidence_through": "2026-10-25",
    "earned_at": "2026-10-25",
    "published_at": "2026-10-26",
    "visible_until": "2027-01-23",
    "badge_label": "Exact score 1–1 · 25 Oct",
    "scope_words": null,
    "title_id": "zk-13387032faae83fd91b9",
    "evidence_items": [
     {
      "nid": "n-c29aedb6eb5a0b02e0d05993",
      "data": "2026-10-25",
      "match": "Monaco v Lille",
      "said_text": "Correct score: Monaco 1-1 Lille",
      "outcome_label": "score right · result right",
      "evidence_price": null,
      "comparison": "4 other tipsters and sources named an exact score on this match, 2 right",
      "url": "/authors/joel-lefevre/picks/3/#pick-n-c29aedb6eb5a0b02e0d05993"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1014,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1014,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 746,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 746,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 582,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 582,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-13387032fa-event-card.svg"
    },
    "profile_anchor": "title-13387032faae",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 0,
     "unpriced": 1,
     "probability": null,
     "one_in": null,
     "words": "No recorded prices for these picks, so the chance cannot be measured."
    },
    "embed_anchor": "title-exact-score-called-exact-score-called-2"
   },
   {
    "code_name": "CS-10",
    "display_name": "Exact score 1–2 · Stade Brestois v Nice · 23 Oct 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "z-28abb26c24",
    "bucket": "Exact score called",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Exact score 1–2 · Stade Brestois v Nice · 23 Oct 2026",
    "rationale": "Correct score 1–2 called before the match; 5 other tipsters and sources named an exact score on this match, 0 right. Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-cs-10-z-28abb26c24-event",
    "alt": "Joel Lefevre · Exact score 1–2 · Stade Brestois v Nice · 23 Oct 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-exact-score-called-exact-score-called-3\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-m-light.svg\" alt=\"Joel Lefevre · Exact score 1–2 · Stade Brestois v Nice · 23 Oct 2026 · Tracked by Forecast Record\" width=\"803\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 21 Jan 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-10-23",
    "evidence_through": "2026-10-23",
    "earned_at": "2026-10-23",
    "published_at": "2026-10-24",
    "visible_until": "2027-01-21",
    "badge_label": "Exact score 1–2 · 23 Oct",
    "scope_words": null,
    "title_id": "zk-28abb26c241d9b57f155",
    "evidence_items": [
     {
      "nid": "n-ea258311e68e58d3e0b0c555",
      "data": "2026-10-23",
      "match": "Stade Brestois v Nice",
      "said_text": "Correct score: Stade Brestois 1-2 Nice",
      "outcome_label": "score right · result right",
      "evidence_price": null,
      "comparison": "5 other tipsters and sources named an exact score on this match, 0 right",
      "url": "/authors/joel-lefevre/picks/3/#pick-n-ea258311e68e58d3e0b0c555"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1091,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1091,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 803,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 803,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 626,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 626,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-28abb26c24-event-card.svg"
    },
    "profile_anchor": "title-28abb26c241d",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 0,
     "unpriced": 1,
     "probability": null,
     "one_in": null,
     "words": "No recorded prices for these picks, so the chance cannot be measured."
    },
    "embed_anchor": "title-exact-score-called-exact-score-called-3"
   },
   {
    "code_name": "C-02",
    "display_name": "Only one right of 14 tipsters and sources · Away win · 23 Oct 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "all",
    "bucket": "Lone correct call",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Only one right of 14 tipsters and sources · Away win · Stade Brestois v Nice · 23 Oct 2026",
    "rationale": "Away win called correctly; 13 other tipsters and sources on this match, 0 right (12 named home win, 1 named draw). Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-c-02-all-event",
    "alt": "Joel Lefevre · Only one right of 14 tipsters and sources · Away win · Stade Brestois v Nice · 23 Oct 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-lone-correct-call\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-m-light.svg\" alt=\"Joel Lefevre · Only one right of 14 tipsters and sources · Away win · Stade Brestois v Nice · 23 Oct 2026 · Tracked by Forecast Record\" width=\"1103\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 21 Jan 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-10-23",
    "evidence_through": "2026-10-23",
    "earned_at": "2026-10-23",
    "published_at": "2026-10-24",
    "visible_until": "2027-01-21",
    "badge_label": "Only right of 14 · 23 Oct",
    "scope_words": null,
    "title_id": "zk-d0112a2d9f64717c8b78",
    "evidence_items": [
     {
      "nid": "n-ea258311e68e58d3e0b0c555",
      "data": "2026-10-23",
      "match": "Stade Brestois v Nice",
      "said_text": "Correct score: Stade Brestois 1-2 Nice",
      "outcome_label": "score right · result right",
      "evidence_price": 3.15,
      "comparison": "13 other tipsters and sources on this match, 0 right (12 named home win, 1 named draw)",
      "url": "/authors/joel-lefevre/picks/3/#pick-n-ea258311e68e58d3e0b0c555"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1499,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1499,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 1103,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 1103,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 862,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 862,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/c-02-all-event-card.svg"
    },
    "profile_anchor": "title-d0112a2d9f64",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 1,
     "unpriced": 0,
     "hits": 1,
     "probability": 0.31746,
     "one_in": 3,
     "log10": -0.5,
     "words": "1 in 3",
     "rule": "market probability (1/price) of this one pick",
     "note": "market prices include the bookmaker margin, so the chance is slightly overstated — a cautious figure"
    },
    "embed_anchor": "title-lone-correct-call"
   },
   {
    "code_name": "CS-10",
    "display_name": "Exact score 1–3 · Atlanta United v Inter Miami CF · 17 Oct 2026",
    "received_at": "2026-11-07T19:52:23.438Z",
    "window_kind": "event",
    "cause": null,
    "type_code": null,
    "bucket_code": "z-fd457d02a4",
    "bucket": "Exact score called",
    "measure": null,
    "place": null,
    "out_of": null,
    "n_bets": 1,
    "n_events": null,
    "amount": null,
    "ci_low": null,
    "ci_high": null,
    "ci_level": null,
    "fact": "Exact score 1–3 · Atlanta United v Inter Miami CF · 17 Oct 2026",
    "rationale": "Correct score 1–3 called before the match; 2 other tipsters and sources named an exact score on this match, 1 right. Data: live record. Term: a dated fact.",
    "provenance": "live",
    "rules_version": "catalog-1",
    "methodology_version": "catalog-1",
    "data_date": "2026-11-07T19:52:23.438Z",
    "valid_until": null,
    "anchor_id": "standing-cs-10-z-fd457d02a4-event",
    "alt": "Joel Lefevre · Exact score 1–3 · Atlanta United v Inter Miami CF · 17 Oct 2026 · Tracked by Forecast Record",
    "csv_url": null,
    "embed": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/#title-exact-score-called-exact-score-called-4\" rel=\"nofollow\"><img src=\"https://forecastrecord.com/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-m-light.svg\" alt=\"Joel Lefevre · Exact score 1–3 · Atlanta United v Inter Miami CF · 17 Oct 2026 · Tracked by Forecast Record\" width=\"884\" height=\"28\" loading=\"lazy\"></a>",
    "neighbours": [],
    "window_words": "On show until 15 Jan 2027",
    "measure_words": null,
    "amount_words": null,
    "interval_words": null,
    "title_tier": "dated_record",
    "status": "active",
    "status_reason": null,
    "event_at": "2026-10-17",
    "evidence_through": "2026-10-17",
    "earned_at": "2026-10-18",
    "published_at": "2026-10-19",
    "visible_until": "2027-01-15",
    "badge_label": "Exact score 1–3 · 17 Oct",
    "scope_words": null,
    "title_id": "zk-fd457d02a4d233785a6d",
    "evidence_items": [
     {
      "nid": "n-ee08676766e1b69169a0ffdf",
      "data": "2026-10-17",
      "match": "Atlanta United v Inter Miami CF",
      "said_text": "Correct score: Atlanta United 1-3 Inter Miami CF",
      "outcome_label": "score right · result right",
      "evidence_price": null,
      "comparison": "2 other tipsters and sources named an exact score on this match, 1 right",
      "url": "/authors/joel-lefevre/picks/3/#pick-n-ee08676766e1b69169a0ffdf"
     }
    ],
    "evidence_total": 1,
    "badge": {
     "variants": [
      {
       "size": "l",
       "theme": "light",
       "width": 1201,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-l-light.svg"
      },
      {
       "size": "l",
       "theme": "dark",
       "width": 1201,
       "height": 40,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-l-dark.svg"
      },
      {
       "size": "m",
       "theme": "light",
       "width": 884,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-m-light.svg"
      },
      {
       "size": "m",
       "theme": "dark",
       "width": 884,
       "height": 28,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-m-dark.svg"
      },
      {
       "size": "s",
       "theme": "light",
       "width": 690,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-s-light.svg"
      },
      {
       "size": "s",
       "theme": "dark",
       "width": 690,
       "height": 20,
       "url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-s-dark.svg"
      }
     ],
     "card_url": "/b/e-aef77d241797d8716c6a7ee2/cs-10-z-fd457d02a4-event-card.svg"
    },
    "profile_anchor": "title-fd457d02a4d2",
    "chance": {
     "contract_version": 1,
     "kind": "single",
     "priced": 0,
     "unpriced": 1,
     "probability": null,
     "one_in": null,
     "words": "No recorded prices for these picks, so the chance cannot be measured."
    },
    "embed_anchor": "title-exact-score-called-exact-score-called-4"
   }
  ],
  "publication_mode": "top20",
  "empty_reason": null,
  "rules_version": "catalog-1",
  "insufficient": [],
  "badges_on_page": 0,
  "header_titles": [
   {
    "title_id": "zk-d0112a2d9f64717c8b78",
    "code_name": "C-02",
    "title_tier": "dated_record",
    "badge_label": "Only right of 14 · 23 Oct",
    "body": "Only one right of 14 tipsters and sources · Away win · Stade Brestois v Nice · 23 Oct 2026",
    "tier": null,
    "provenance": "live",
    "anchor_id": "title-d0112a2d9f64",
    "event_at": "2026-10-23",
    "url": "/titles/c-02-lone-correct-call/#zk-d0112a2d9f64717c8b78"
   },
   {
    "title_id": "zk-227a92c97fe42dbb789c",
    "code_name": "CS-10",
    "title_tier": "dated_record",
    "badge_label": "Exact score 2–0 · 5 Nov",
    "body": "Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026",
    "tier": null,
    "provenance": "live",
    "anchor_id": "title-227a92c97fe4",
    "event_at": "2026-11-05",
    "url": "/titles/cs-10-exact-score-called/"
   },
   {
    "title_id": "zk-d7f4b9b4232143bb7129",
    "code_name": "CS-10",
    "title_tier": "dated_record",
    "badge_label": "Exact score 1–0 · 30 Oct",
    "body": "Exact score 1–0 · Lille v RC Lens · 30 Oct 2026",
    "tier": null,
    "provenance": "live",
    "anchor_id": "title-d7f4b9b42321",
    "event_at": "2026-10-30",
    "url": "/titles/cs-10-exact-score-called/"
   }
  ],
  "record_origin": [
   {
    "portion": "live",
    "n": 37,
    "body": "37 recorded before kick-off · since 30 Sep 2026"
   }
  ],
  "recent_record": [
   {
    "code_name": "C-02",
    "body": "Only one right of 14 tipsters and sources · Away win · Stade Brestois v Nice · 23 Oct 2026",
    "event_at": "2026-10-23",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-d0112a2d9f64"
   },
   {
    "code_name": "CS-10",
    "body": "Exact score 2–0 · Monaco v Nordsjælland · 5 Nov 2026",
    "event_at": "2026-11-05",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-227a92c97fe4"
   },
   {
    "code_name": "CS-10",
    "body": "Exact score 1–0 · Lille v RC Lens · 30 Oct 2026",
    "event_at": "2026-10-30",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-d7f4b9b42321"
   },
   {
    "code_name": "CS-10",
    "body": "Exact score 1–1 · Monaco v Lille · 25 Oct 2026",
    "event_at": "2026-10-25",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-13387032faae"
   },
   {
    "code_name": "CS-10",
    "body": "Exact score 1–2 · Stade Brestois v Nice · 23 Oct 2026",
    "event_at": "2026-10-23",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-28abb26c241d"
   },
   {
    "code_name": "CS-10",
    "body": "Exact score 1–3 · Atlanta United v Inter Miami CF · 17 Oct 2026",
    "event_at": "2026-10-17",
    "url": null,
    "provenance": "live",
    "anchor_id": "title-fd457d02a4d2"
   }
  ],
  "record_details": [
   {
    "code_name": "M-11",
    "body": "Most recorded: Correct score · 37 matches",
    "details_words": "Correct score 5/37 (37 matches)",
    "url": null,
    "provenance": "live",
    "display_name": "Most recorded bet type",
    "rule_href": "/titles/m-11-most-recorded-bet-type/"
   },
   {
    "code_name": "CS-01",
    "body": "Exact scores · 5/37",
    "details_words": null,
    "url": null,
    "provenance": "live",
    "display_name": "Exact scores",
    "rule_href": "/titles/cs-01-exact-scores/"
   },
   {
    "code_name": "C-01",
    "body": "Minority calls · 0/1",
    "details_words": "Result calls on matches with at least 8 other tipsters and sources, where at least 60.0% of them named another outcome.",
    "url": null,
    "provenance": "live",
    "display_name": "Minority calls",
    "rule_href": "/titles/c-01-minority-calls/"
   },
   {
    "code_name": "X-01",
    "body": "Longest price: correct at 3.50 · 25 Oct 2026",
    "details_words": "Monaco v Lille · Draw at 3.50 (our pre-match price) · from the predicted score: Correct score: Monaco 1-1 Lille",
    "url": "/authors/joel-lefevre/picks/3/#pick-n-c29aedb6eb5a0b02e0d05993",
    "provenance": "live",
    "display_name": "Correct at a long price",
    "rule_href": "/titles/x-01-correct-at-a-long-price/"
   },
   {
    "code_name": "E-03",
    "body": "Away calls · 6/11",
    "details_words": null,
    "url": null,
    "provenance": "live",
    "display_name": "Away calls",
    "rule_href": "/titles/e-03-away-calls/"
   },
   {
    "code_name": "E-06",
    "body": "Non-favourite calls · 3/11",
    "details_words": null,
    "url": null,
    "provenance": "live",
    "display_name": "Non-favourite calls",
    "rule_href": "/titles/e-06-non-favourite-calls/"
   }
  ],
  "history": []
 },
 "retro": null,
 "late": null,
 "price_vs_market": null,
 "record_summary": {
  "contract_version": "1",
  "entity_type": "person",
  "entity_words": "Individual author",
  "source": {
   "name": "sportsmole.co.uk",
   "url": "https://www.sportsmole.co.uk/tennis/wta-championships/preview/coco-gauff-vs-jessica-pegula-prediction-form-head-to-head_608653.html"
  },
  "observed_from": "2026-09-27",
  "observed_to": "2026-11-07",
  "data_as_of": "2026-11-07",
  "state": "settled",
  "series_code": "market_price",
  "series": "Recorded before kick-off, at our recorded market price",
  "restored": false,
  "headline_kind": "live_snapshot",
  "headline_part": "live",
  "settled_picks": 1,
  "matches": 1,
  "void": 0,
  "net_points_hundredths": -10000,
  "staked_hundredths": 10000,
  "return_percent": "-100.00",
  "stake_per_pick_hundredths": 10000,
  "period_from": "2026-11-01",
  "period_to": "2026-11-01",
  "status": "calculated",
  "method_version": "2.2",
  "short_history": true,
  "reason": null,
  "reasons": [],
  "sentence": "Forecast Record recorded 1 settled live pick by Joel Lefevre before kick-off across 1 match on 1 November 2026. Won 0 of 1 settled live pick at our recorded market prices. Of the 63 predictions we hold for Joel Lefevre, 43 are linked to matches: 43 were recorded by us before kick-off. Figures as of 7 November 2026.",
  "numbers": [
   {
    "label": "Settled live picks",
    "value": "1",
    "anchor": "/methodology/#settled-pick",
    "note": null
   },
   {
    "label": "Matches",
    "value": "1",
    "anchor": "/methodology/#match",
    "note": null
   },
   {
    "label": "Net result",
    "value": "−100 points",
    "anchor": "/methodology/#settlement",
    "note": "100 points per pick"
   },
   {
    "label": "Return at our recorded market price",
    "value": "−100.0%",
    "anchor": "/methodology/#roi",
    "note": null
   }
  ],
  "limitations": [
   "This page combines Joel Lefevre across 2 platforms. The record above counts each prediction once, even when the same pick (match, market and selection) appeared on more than one platform; each platform keeps its own total under “Where Joel Lefevre publishes”."
  ],
  "other_series": [],
  "return_over_time": [],
  "return_over_time_parts": {
   "live": {
    "part": "live",
    "label": "Recorded by us before kick-off",
    "series_code": "market_price",
    "price_rule": "Return at our recorded market price",
    "x_axis": "match_date",
    "dated_note": "Dated by match day. Each pick was recorded by us before kick-off and settled after the match.",
    "settled_picks": 1,
    "matches": 1,
    "match_dates": 1,
    "period_from": "2026-11-01",
    "period_to": "2026-11-01",
    "stake_per_pick_hundredths": 10000,
    "final_points_hundredths": -10000,
    "low": {
     "date": "2026-11-01",
     "cumulative_points_hundredths": -10000,
     "after_picks": 1
    },
    "high": {
     "date": "2026-11-01",
     "cumulative_points_hundredths": -10000,
     "after_picks": 1
    },
    "line_drawn": false,
    "steps": [
     {
      "date": "2026-11-01",
      "cumulative_points_hundredths": -10000,
      "n": 1,
      "picks": 1
     }
    ]
   },
   "archived": null
  },
  "author_response": null,
  "cite": {
   "text": "Forecast Record recorded 1 settled live pick by Joel Lefevre before kick-off across 1 match on 1 November 2026. Won 0 of 1 settled live pick at our recorded market prices. Of the 63 predictions we hold for Joel Lefevre, 43 are linked to matches: 43 were recorded by us before kick-off. Figures as of 7 November 2026.",
   "url": "https://forecastrecord.com/authors/joel-lefevre/",
   "data_as_of": "2026-11-07",
   "method_version": "2.2"
  },
  "origin": {
   "contract_version": "1",
   "predictions": 63,
   "under_review": 0,
   "no_match_linked": 20,
   "proven_predictions": 43,
   "proven_checked": 37,
   "proven_measured": 37,
   "proven_dates": 21,
   "parts": [
    {
     "code": "live",
     "title": "Recorded before kick-off",
     "explanation": "Saved by us from the source before kick-off.",
     "predictions": 43,
     "checked": 37,
     "price_rule": "Return at our recorded market price",
     "series_code": "market_price",
     "main": {
      "settled_picks": 1,
      "void": 0,
      "matches": 1,
      "net_points_hundredths": -10000,
      "staked_hundredths": 10000,
      "return_percent": "-100.00",
      "interval_low": null,
      "interval_high": null,
      "interval_note": "too few independent matches to estimate an interval",
      "period_from": "2026-11-01",
      "period_to": "2026-11-01",
      "method_version": "2.2",
      "snapshot_delay_median_hours": "0.0",
      "snapshot_delay_max_hours": "0.0",
      "checked_after_kickoff_picks": 0
     },
     "same_picks": [],
     "score": {
      "score_forecasts": 36,
      "exact_hits": 5,
      "exact_rate": 13.9,
      "outcome_checked": 36,
      "outcome_hits": 19,
      "outcome_rate": 52.8,
      "baseline_matches": 26,
      "baseline_distinct_matches": 26,
      "outcome_hits_on_baseline": 15,
      "outcome_rate_on_baseline": 57.7,
      "favourite_hits": 17,
      "favourite_rate": 65.4,
      "price_basis": "our pre-match snapshot",
      "pending": 6,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": [
       "Outcome checked. No betting return is attributed to these score forecasts.",
       "5 of 36 score forecasts named the exact score (13.9%).",
       "The result implied by the named score was right in 15 of 26 matches; the market favourite was right in 17 of the same 26 matches.",
       "A pre-match market favourite is known for 26 of 36 forecasts; the comparison uses only those.",
       "The market favourite is the home win, draw or away win with the lowest price in our own odds snapshot taken before kick-off.",
       "The implied result follows from the named score (2-1 implies a home win)."
      ]
     },
     "eligible": {
      "checked": 37,
      "priced": 1
     },
     "accuracy": {
      "picks": 1,
      "won": 0,
      "won_percent": "0.0",
      "implied_percent": "10.0",
      "left_out": 0,
      "by_market": [
       {
        "market": "Correct score",
        "won": 0,
        "picks": 1,
        "implied_percent": "10.0"
       }
      ]
     }
    },
    {
     "code": "archived",
     "title": "Archived before kick-off",
     "explanation": "Restored from a copy saved by an independent web archive before kick-off.",
     "predictions": 0,
     "checked": 0,
     "price_rule": "Reconstructed at archived prices",
     "series_code": "retro_market_closing_sm",
     "main": null,
     "same_picks": [],
     "score": {
      "score_forecasts": 0,
      "exact_hits": 0,
      "exact_rate": null,
      "outcome_checked": 0,
      "outcome_hits": 0,
      "outcome_rate": null,
      "baseline_matches": 0,
      "baseline_distinct_matches": 0,
      "outcome_hits_on_baseline": 0,
      "outcome_rate_on_baseline": null,
      "favourite_hits": 0,
      "favourite_rate": null,
      "price_basis": null,
      "pending": 0,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": []
     },
     "eligible": {
      "checked": 0,
      "priced": 0
     },
     "accuracy": null
    },
    {
     "code": "found_after",
     "title": "Found after the match",
     "explanation": "First found after the match; the date is the one the source states.",
     "predictions": 0,
     "checked": 0,
     "price_rule": "Reconstructed at archived prices",
     "series_code": "retro_market_closing_sm",
     "main": null,
     "same_picks": [],
     "score": {
      "score_forecasts": 0,
      "exact_hits": 0,
      "exact_rate": null,
      "outcome_checked": 0,
      "outcome_hits": 0,
      "outcome_rate": null,
      "baseline_matches": 0,
      "baseline_distinct_matches": 0,
      "outcome_hits_on_baseline": 0,
      "outcome_rate_on_baseline": null,
      "favourite_hits": 0,
      "favourite_rate": null,
      "price_basis": null,
      "pending": 0,
      "void": 0,
      "recorded_after_kickoff": 0,
      "lines": []
     },
     "eligible": {
      "checked": 0,
      "priced": 0
     },
     "accuracy": null
    }
   ]
  },
  "live_alongside": null,
  "headline_record_ids": [
   "n-bd59dc27f71a4b9f580ed397"
  ],
  "interval_low": null,
  "interval_high": null,
  "caption": "Recorded before kick-off, at our recorded market price · 100 points per pick · 1 November 2026 · Calculated · picks settled under method v2.2",
  "record_from": "2026-09-27",
  "record_to": "2026-11-07"
 },
 "recorded_picks": [
  {
   "record_id": "n-bd59dc27f71a4b9f580ed397",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-bd59dc27f71a4b9f580ed397",
   "match": "RC Strasbourg v Auxerre",
   "match_url": "/football/matches/rc-strasbourg-vs-auxerre-2026-11-01/",
   "kickoff": "2026-11-01T14:00:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 58.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: RC Strasbourg 2-0 Auxerre",
   "quote": null,
   "group": "settled",
   "outcome": "Lost",
   "claim_outcome": "Lost",
   "final_score": "5-1",
   "reason": null,
   "reason_code": null,
   "points_hundredths": -10000,
   "series_code": "market_price",
   "series_short": "odds snapshot",
   "author_price": null,
   "settled_price": "10.0000",
   "published_at": "2026-10-30T02:34:32.000Z",
   "recorded_at": "2026-10-30T03:10:22.354Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": true,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-bd59dc27f71a4b9f580ed397",
    "quote_text": "We say: Strasbourg 2-0 Auxerre",
    "fragment_from": 3723,
    "fragment_to": 3753,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-auxerre-prediction-team-news-lineups_608034.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "d76c1daead21e4c7454bdee2190621d8ab464443eafd3c6b885740eefa8906e5",
     "material_removed": false
    },
    "published_at": "2026-10-30T02:34:32.000Z",
    "detected_at": "2026-10-30T03:10:22.354Z",
    "executed_at": "2026-11-01T11:16:22.182Z",
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-ce348ebba1d7",
     "display_name": "RC Strasbourg — Auxerre",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-01T14:00:00.000Z",
     "url": "/football/matches/rc-strasbourg-vs-auxerre-2026-11-01/",
     "scoreline": "5-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "RC Strasbourg 2-0 Auxerre",
    "odds_set": {
     "by_author": null,
     "our_snapshot": "10.0000",
     "our_snapshot_at": "2026-10-30T03:10:08.342Z",
     "our_snapshot_source": "market snapshot",
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": 10000,
    "result": "loss",
    "simulation_change_hundredths": -10000,
    "bankroll_after_hundredths": null,
    "executed_by": "ours",
    "series_label": "At an independent odds snapshot",
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-30T02:34:32.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-30T02:34:32.000Z",
     "detected_at": "2026-10-30T03:10:22.354Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "RC Strasbourg 2-0 Auxerre",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: RC Strasbourg 2-0 Auxerre"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "5-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was RC Strasbourg 5-1 Auxerre."
    },
    "settlements": [
     {
      "operation_id": "6227eb2e545dedc82b1c0760ced3e834b70855aa2ce570b6dd34e907cffb2db9",
      "series_key": "market_price",
      "series_label": "At an independent odds snapshot",
      "derived": false,
      "site_simulation": true,
      "author_words": true,
      "market_label": "Correct score",
      "choice": "RC Strasbourg 2-0 Auxerre",
      "decimal_odds": "10.0000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-01T11:16:22.182Z",
      "methodology_version": "2.2",
      "on_claim_market": true,
      "replaced": false
     },
     {
      "operation_id": "29cb81c575668e1fae1e4da79d8a9aa85a5be245b9ad955af71afd4e2b78d2e6",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "RC Strasbourg",
      "decimal_odds": "1.8200",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 8200,
      "executed_at": "2026-11-01T11:16:23.081Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "settled_pick",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-auxerre-prediction-team-news-lineups_608034.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "RC Strasbourg 2-0 Auxerre"
   }
  },
  {
   "record_id": "n-a63993097c8e495fc4bf9e0a",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-a63993097c8e495fc4bf9e0a",
   "match": "RC Lens v Olympique de Marseille",
   "match_url": "/football/matches/rc-lens-vs-olympique-de-marseille-2026-11-08/",
   "kickoff": "2026-11-08T19:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 66.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: RC Lens 0-2 Olympique de Marseille",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-06T00:42:45.000Z",
   "recorded_at": "2026-11-06T01:10:23.485Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-a63993097c8e495fc4bf9e0a",
    "quote_text": "We say: Lens 0-2 Marseille",
    "fragment_from": 3873,
    "fragment_to": 3899,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "653eed53915a0d4697ad3f953d236fba651b68059bc0158c0c582e209a176023",
     "material_removed": false
    },
    "published_at": "2026-11-06T00:42:45.000Z",
    "detected_at": "2026-11-06T01:10:23.485Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-35db186e586c",
     "display_name": "RC Lens — Olympique de Marseille",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-08T19:45:00.000Z",
     "url": "/football/matches/rc-lens-vs-olympique-de-marseille-2026-11-08/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "RC Lens 0-2 Olympique de Marseille",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-06T00:42:45.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-06T00:42:45.000Z",
     "detected_at": "2026-11-06T01:10:23.485Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "RC Lens 0-2 Olympique de Marseille",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: RC Lens 0-2 Olympique de Marseille"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 8 November 2026, 19:45 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 8 November 2026, 19:45 UTC."
    },
    "settlements": [
     {
      "operation_id": "4e2bcca5a03ec40b32f6104de38d704d2e1c26a81b264e2f7eab597c23fd2079",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Olympique de Marseille",
      "decimal_odds": "2.9750",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-07T09:14:42.651Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-marseille-prediction-team-news-lineups_608552.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "RC Lens 0-2 Olympique de Marseille"
   }
  },
  {
   "record_id": "n-e7126c08288f36f38bc93a08",
   "url": "/authors/joel-lefevre/picks/5/#pick-n-e7126c08288f36f38bc93a08",
   "match": "Le Havre v Lorient",
   "match_url": "/football/matches/le-havre-vs-lorient-2026-11-08/",
   "kickoff": "2026-11-08T16:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 61.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Le Havre 1-0 Lorient",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-06T00:01:24.000Z",
   "recorded_at": "2026-11-06T03:10:10.497Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-e7126c08288f36f38bc93a08",
    "quote_text": "We say: Le Havre 1-0 Lorient",
    "fragment_from": 3453,
    "fragment_to": 3481,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "f55a3b01240a0a630236716826dc5adaf9e915f2af2d7e8f8af116a803d5ce2b",
     "material_removed": false
    },
    "published_at": "2026-11-06T00:01:24.000Z",
    "detected_at": "2026-11-06T03:10:10.497Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-148050af9e63",
     "display_name": "Le Havre — Lorient",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-08T16:15:00.000Z",
     "url": "/football/matches/le-havre-vs-lorient-2026-11-08/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "Le Havre 1-0 Lorient",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-06T00:01:24.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-06T00:01:24.000Z",
     "detected_at": "2026-11-06T03:10:10.497Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Le Havre 1-0 Lorient",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Le Havre 1-0 Lorient"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 8 November 2026, 16:15 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 8 November 2026, 16:15 UTC."
    },
    "settlements": [
     {
      "operation_id": "fc57d27a259a6672b937a7c997ac8bc0a2b230f40d801c95bfb7ea8e981ca16a",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Le Havre",
      "decimal_odds": "2.8000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-06T21:29:27.299Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Le Havre 1-0 Lorient"
   }
  },
  {
   "record_id": "n-ba6c85fd5a2e9c888f22bb76",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-ba6c85fd5a2e9c888f22bb76",
   "match": "San Diego FC v Sporting Kansas City",
   "match_url": "/football/matches/san-diego-fc-vs-sporting-kansas-city-2026-11-08/",
   "kickoff": "2026-11-08T00:00:00.000Z",
   "competition": "MLS",
   "lead_hours": 71.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: San Diego FC 3-0 Sporting Kansas City",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-04T23:22:08.000Z",
   "recorded_at": "2026-11-05T00:10:06.869Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-ba6c85fd5a2e9c888f22bb76",
    "quote_text": "We say: San Diego 3-0 Sporting Kansas City",
    "fragment_from": 3646,
    "fragment_to": 3688,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "e39f8830737fce2607b9fa07ec2510029308f305a867d7959fb0a90ed32b68b1",
     "material_removed": false
    },
    "published_at": "2026-11-04T23:22:08.000Z",
    "detected_at": "2026-11-05T00:10:06.869Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-edf0a86696c5",
     "display_name": "San Diego FC — Sporting Kansas City",
     "competition_name": "MLS",
     "starts_at": "2026-11-08T00:00:00.000Z",
     "url": "/football/matches/san-diego-fc-vs-sporting-kansas-city-2026-11-08/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "San Diego FC 3-0 Sporting Kansas City",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-04T23:22:08.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-04T23:22:08.000Z",
     "detected_at": "2026-11-05T00:10:06.869Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "San Diego FC 3-0 Sporting Kansas City",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "3-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: San Diego FC 3-0 Sporting Kansas City"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 8 November 2026, 00:00 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 8 November 2026, 00:00 UTC."
    },
    "settlements": [
     {
      "operation_id": "96a43288515f908e8cfc33c02237980fe6fbabd9b76cd96bb2c133097372f850",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "San Diego FC",
      "decimal_odds": "1.4400",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-06T01:53:09.495Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/san-diego-fc/preview/san-diego-vs-kansas-prediction-team-news-lineups_608444.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "San Diego FC 3-0 Sporting Kansas City"
   }
  },
  {
   "record_id": "n-40c3b527f84d7440eaeb0c80",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-40c3b527f84d7440eaeb0c80",
   "match": "CF Montréal v Vancouver Whitecaps",
   "match_url": "/football/matches/cf-montreal-vs-vancouver-whitecaps-2026-11-07/",
   "kickoff": "2026-11-07T21:00:00.000Z",
   "competition": "MLS",
   "lead_hours": 68.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: CF Montréal 1-4 Vancouver Whitecaps",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-04T23:16:57.000Z",
   "recorded_at": "2026-11-05T00:10:08.141Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-40c3b527f84d7440eaeb0c80",
    "quote_text": "We say: CF Montreal 1-4 Vancouver Whitecaps",
    "fragment_from": 3952,
    "fragment_to": 3995,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/montreal-impact/preview/montreal-vs-vancouver-prediction-team-news-lineups_608443.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "4b231cf390ed3a155da3bc989d034fdd62a8a5fad9d59d80fc477552e02df956",
     "material_removed": false
    },
    "published_at": "2026-11-04T23:16:57.000Z",
    "detected_at": "2026-11-05T00:10:08.141Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-ec3419650de7",
     "display_name": "CF Montréal — Vancouver Whitecaps",
     "competition_name": "MLS",
     "starts_at": "2026-11-07T21:00:00.000Z",
     "url": "/football/matches/cf-montreal-vs-vancouver-whitecaps-2026-11-07/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "CF Montréal 1-4 Vancouver Whitecaps",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-04T23:16:57.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-04T23:16:57.000Z",
     "detected_at": "2026-11-05T00:10:08.141Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "CF Montréal 1-4 Vancouver Whitecaps",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-4",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: CF Montréal 1-4 Vancouver Whitecaps"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 7 November 2026, 21:00 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
    },
    "settlements": [
     {
      "operation_id": "224977e21a0a5b07e1d078d3cf6a8e49c7a7955c8ac7e0541540c721dd35b7f1",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Vancouver Whitecaps",
      "decimal_odds": "1.6200",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-06T00:17:08.347Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/montreal-impact/preview/montreal-vs-vancouver-prediction-team-news-lineups_608443.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "CF Montréal 1-4 Vancouver Whitecaps"
   }
  },
  {
   "record_id": "n-a2d3227269a5afeda2e11907",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-a2d3227269a5afeda2e11907",
   "match": "Philadelphia Union v Toronto FC",
   "match_url": "/football/matches/philadelphia-union-vs-toronto-fc-2026-11-07/",
   "kickoff": "2026-11-07T21:00:00.000Z",
   "competition": "MLS",
   "lead_hours": 69.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Philadelphia Union 2-0 Toronto FC",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-04T22:38:21.000Z",
   "recorded_at": "2026-11-04T23:10:21.863Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-a2d3227269a5afeda2e11907",
    "quote_text": "We say: Philadelphia Union 2-0 Toronto",
    "fragment_from": 3934,
    "fragment_to": 3972,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/philadelphia-union/preview/philadelphia-vs-toronto-prediction-team-news-lineups_608434.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "21708aecfbce578b6ca56db112f715f7b157c8e02277090596f6af76e717755f",
     "material_removed": false
    },
    "published_at": "2026-11-04T22:38:21.000Z",
    "detected_at": "2026-11-04T23:10:21.863Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-e620be72bdeb",
     "display_name": "Philadelphia Union — Toronto FC",
     "competition_name": "MLS",
     "starts_at": "2026-11-07T21:00:00.000Z",
     "url": "/football/matches/philadelphia-union-vs-toronto-fc-2026-11-07/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "Philadelphia Union 2-0 Toronto FC",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-04T22:38:21.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-04T22:38:21.000Z",
     "detected_at": "2026-11-04T23:10:21.863Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Philadelphia Union 2-0 Toronto FC",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Philadelphia Union 2-0 Toronto FC"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 7 November 2026, 21:00 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
    },
    "settlements": [
     {
      "operation_id": "db41746840c21fbd8fcce2e8b435384e0b41df02cabd67b1e1d2dc0f54089dcf",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Philadelphia Union",
      "decimal_odds": "1.4274",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-05T23:57:36.216Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/philadelphia-union/preview/philadelphia-vs-toronto-prediction-team-news-lineups_608434.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Philadelphia Union 2-0 Toronto FC"
   }
  },
  {
   "record_id": "n-393ce1ed523fdd9e2b78c192",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-393ce1ed523fdd9e2b78c192",
   "match": "New York Red Bulls v Atlanta United",
   "match_url": "/football/matches/new-york-red-bulls-vs-atlanta-united-2026-11-07/",
   "kickoff": "2026-11-07T21:00:00.000Z",
   "competition": "MLS",
   "lead_hours": 69.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: New York Red Bulls 1-2 Atlanta United",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-04T22:51:59.000Z",
   "recorded_at": "2026-11-04T23:10:20.502Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-393ce1ed523fdd9e2b78c192",
    "quote_text": "We say: New York Red Bulls 1-2 Atlanta United",
    "fragment_from": 3805,
    "fragment_to": 3850,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "8cd089bc6aabfbb77efbf471ec30da325b6f537112e5daa92d1af88f1ba2df21",
     "material_removed": false
    },
    "published_at": "2026-11-04T22:51:59.000Z",
    "detected_at": "2026-11-04T23:10:20.502Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-ba35314f049e",
     "display_name": "New York Red Bulls — Atlanta United",
     "competition_name": "MLS",
     "starts_at": "2026-11-07T21:00:00.000Z",
     "url": "/football/matches/new-york-red-bulls-vs-atlanta-united-2026-11-07/",
     "scoreline": null,
     "condition": "scheduled"
    },
    "market_label": "Correct score",
    "outcome_label": "New York Red Bulls 1-2 Atlanta United",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "unknown",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-04T22:51:59.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-04T22:51:59.000Z",
     "detected_at": "2026-11-04T23:10:20.502Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "New York Red Bulls 1-2 Atlanta United",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: New York Red Bulls 1-2 Atlanta United"
    },
    "author_claim_outcome": {
     "result": "unknown",
     "scoreline": null,
     "data_status": "unknown",
     "cause": "kick-off 7 November 2026, 21:00 UTC",
     "methodology_version": "2.2",
     "in_words": "Pending: kick-off 7 November 2026, 21:00 UTC."
    },
    "settlements": [
     {
      "operation_id": "5cac91b62213e63c4a515926fef392ef3ddc9d89a37e4aa0eb9576cb19aa5446",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Atlanta United",
      "decimal_odds": "3.3750",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": null,
      "result_words": null,
      "change_hundredths": null,
      "executed_at": "2026-11-05T23:57:43.483Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-atlanta-prediction-team-news-lineups_608436.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "New York Red Bulls 1-2 Atlanta United"
   }
  },
  {
   "record_id": "n-765be835d13510be5dc94364",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-765be835d13510be5dc94364",
   "match": "Toulouse v RC Strasbourg",
   "match_url": "/football/matches/toulouse-vs-rc-strasbourg-2026-11-06/",
   "kickoff": "2026-11-06T19:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 70.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Toulouse 2-1 RC Strasbourg",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "3-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-03T20:23:15.000Z",
   "recorded_at": "2026-11-03T21:10:10.416Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.0500",
    "result": "Won",
    "points_hundredths": 10500,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-765be835d13510be5dc94364",
    "quote_text": "We say: Toulouse 2-1 Strasbourg",
    "fragment_from": 3764,
    "fragment_to": 3795,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "29e7b6c922aca5b81decf79893fc57649ad7870cabeb062b2eb4956ab663b011",
     "material_removed": false
    },
    "published_at": "2026-11-03T20:23:15.000Z",
    "detected_at": "2026-11-03T21:10:10.416Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-2313515db49a",
     "display_name": "Toulouse — RC Strasbourg",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-06T19:45:00.000Z",
     "url": "/football/matches/toulouse-vs-rc-strasbourg-2026-11-06/",
     "scoreline": "3-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Toulouse 2-1 RC Strasbourg",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-03T20:23:15.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-03T20:23:15.000Z",
     "detected_at": "2026-11-03T21:10:10.416Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Toulouse 2-1 RC Strasbourg",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Toulouse 2-1 RC Strasbourg"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "3-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Toulouse 3-1 RC Strasbourg."
    },
    "settlements": [
     {
      "operation_id": "93f07578d4bdf2ff7f6a259f17007b3cef7fdcb0e70ccc3cd0972c8b7b06316d",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Toulouse",
      "decimal_odds": "2.0500",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 10500,
      "executed_at": "2026-11-04T23:29:44.884Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/toulouse/preview/toulouse-vs-strasbourg-prediction-team-news-lineups_608343.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Toulouse 2-1 RC Strasbourg"
   }
  },
  {
   "record_id": "n-0803e14a85f05e9fe7b1310b",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-0803e14a85f05e9fe7b1310b",
   "match": "Monaco v Nordsjælland",
   "match_url": "/football/matches/monaco-vs-nordsjaelland-2026-11-05/",
   "kickoff": "2026-11-05T20:00:00.000Z",
   "competition": "UEFA Conference League",
   "lead_hours": 68.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Monaco 2-0 Nordsjælland",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Won",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-02T22:28:00.000Z",
   "recorded_at": "2026-11-02T23:10:21.476Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.4400",
    "result": "Won",
    "points_hundredths": 4400,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-0803e14a85f05e9fe7b1310b",
    "quote_text": "We say: Monaco 2-0 Nordsjaelland",
    "fragment_from": 4133,
    "fragment_to": 4165,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/as-monaco/europa-conference-league/preview/monaco-vs-nordsjaelland-prediction-team-news-lineups_608291.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "01e79d5ab0b55f19d046b30fabbb8892d2a67e0b3cba77a13afa5650cc97cb2b",
     "material_removed": false
    },
    "published_at": "2026-11-02T22:28:00.000Z",
    "detected_at": "2026-11-02T23:10:21.476Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-045835f2ee6d",
     "display_name": "Monaco — Nordsjælland",
     "competition_name": "UEFA Conference League",
     "starts_at": "2026-11-05T20:00:00.000Z",
     "url": "/football/matches/monaco-vs-nordsjaelland-2026-11-05/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Monaco 2-0 Nordsjælland",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "win",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-02T22:28:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-02T22:28:00.000Z",
     "detected_at": "2026-11-02T23:10:21.476Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Monaco 2-0 Nordsjælland",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Monaco 2-0 Nordsjælland"
    },
    "author_claim_outcome": {
     "result": "win",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Matched: the final score was Monaco 2-0 Nordsjælland."
    },
    "settlements": [
     {
      "operation_id": "017c09e83f3ef64fb26ae04516f77cbf7a9ee3d4d84d6d262bb577e73fe2a325",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Monaco",
      "decimal_odds": "1.4400",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4400,
      "executed_at": "2026-11-03T21:34:47.377Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/as-monaco/europa-conference-league/preview/monaco-vs-nordsjaelland-prediction-team-news-lineups_608291.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Monaco 2-0 Nordsjælland"
   }
  },
  {
   "record_id": "n-815f4bfcb75e538accb32611",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-815f4bfcb75e538accb32611",
   "match": "Stade Rennais v Olympiakos Piraeus",
   "match_url": "/football/matches/stade-rennais-vs-olympiakos-piraeus-2026-11-04/",
   "kickoff": "2026-11-04T15:30:00.000Z",
   "competition": "UEFA Europa League",
   "lead_hours": 48.3,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Stade Rennais 1-0 Olympiakos Piraeus",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "0-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-02T14:52:42.000Z",
   "recorded_at": "2026-11-02T15:10:02.746Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.2000",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-815f4bfcb75e538accb32611",
    "quote_text": "We say: Rennes 1-0 Olympiacos",
    "fragment_from": 3755,
    "fragment_to": 3784,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "13a36043fa381fb141e179ab3074d0e865fa74ffa1f30d8ea795e5bfaf627520",
     "material_removed": false
    },
    "published_at": "2026-11-02T14:52:42.000Z",
    "detected_at": "2026-11-02T15:10:02.746Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-2e0c5f836ca1",
     "display_name": "Stade Rennais — Olympiakos Piraeus",
     "competition_name": "UEFA Europa League",
     "starts_at": "2026-11-04T15:30:00.000Z",
     "url": "/football/matches/stade-rennais-vs-olympiakos-piraeus-2026-11-04/",
     "scoreline": "0-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Stade Rennais 1-0 Olympiakos Piraeus",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-02T14:52:42.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-02T14:52:42.000Z",
     "detected_at": "2026-11-02T15:10:02.746Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Stade Rennais 1-0 Olympiakos Piraeus",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Stade Rennais 1-0 Olympiakos Piraeus"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "0-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Stade Rennais 0-0 Olympiakos Piraeus."
    },
    "settlements": [
     {
      "operation_id": "96d3a15ba6b4878f8d89cab80e3ee1f846fd48722235e9362ab2d1e600bcea10",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Stade Rennais",
      "decimal_odds": "2.2000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-03T03:12:20.280Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/rennes/europa-league/preview/rennes-vs-olympiacos-prediction-team-news-lineups_608267.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Stade Rennais 1-0 Olympiakos Piraeus"
   }
  },
  {
   "record_id": "n-21051a3e2c1b93cfa6863165",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-21051a3e2c1b93cfa6863165",
   "match": "Villarreal v Paris Saint-Germain",
   "match_url": "/football/matches/villarreal-vs-paris-saint-germain-2026-11-03/",
   "kickoff": "2026-11-03T20:00:00.000Z",
   "competition": "UEFA Champions League",
   "lead_hours": 49.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Villarreal 1-3 Paris Saint-Germain",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "0-6",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-01T17:24:59.000Z",
   "recorded_at": "2026-11-01T18:11:44.487Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "1.5988",
    "result": "Won",
    "points_hundredths": 5988,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-21051a3e2c1b93cfa6863165",
    "quote_text": "We say: Villarreal 1-3 Paris Saint-Germain",
    "fragment_from": 4922,
    "fragment_to": 4964,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "dd44627c42eaacb84c55a6d2374c3ee904469c9af0a225b11d62266a556afbe7",
     "material_removed": false
    },
    "published_at": "2026-11-01T17:24:59.000Z",
    "detected_at": "2026-11-01T18:11:44.487Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-737839aede15",
     "display_name": "Villarreal — Paris Saint-Germain",
     "competition_name": "UEFA Champions League",
     "starts_at": "2026-11-03T20:00:00.000Z",
     "url": "/football/matches/villarreal-vs-paris-saint-germain-2026-11-03/",
     "scoreline": "0-6",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Villarreal 1-3 Paris Saint-Germain",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-11-01T17:24:59.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-11-01T17:24:59.000Z",
     "detected_at": "2026-11-01T18:11:44.487Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Villarreal 1-3 Paris Saint-Germain",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-3",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Villarreal 1-3 Paris Saint-Germain"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "0-6",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Villarreal 0-6 Paris Saint-Germain."
    },
    "settlements": [
     {
      "operation_id": "2d36f3b574c3f16ada8ce1a1b1fa8a09659a53f4afd0841f8f095704f77c562c",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Paris Saint-Germain",
      "decimal_odds": "1.5988",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 5988,
      "executed_at": "2026-11-02T19:23:40.251Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/villarreal/champions-league/preview/villarreal-vs-psg-prediction-team-news-lineups_608209.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Villarreal 1-3 Paris Saint-Germain"
   }
  },
  {
   "record_id": "n-b8bdccdb6e67f38316ef9ca4",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-b8bdccdb6e67f38316ef9ca4",
   "match": "Lorient v Stade Brestois",
   "match_url": "/football/matches/lorient-vs-stade-brestois-2026-11-02/",
   "kickoff": "2026-11-02T19:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 116.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Lorient 2-2 Stade Brestois",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "0-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T22:54:57.000Z",
   "recorded_at": "2026-10-28T23:10:17.599Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-b8bdccdb6e67f38316ef9ca4",
    "quote_text": "We say: Lorient 2-2 Brest",
    "fragment_from": 3616,
    "fragment_to": 3641,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "1ec06208689f75c46fd0b89f0f58a8d043d363c385d84f11b8c2448892807dc4",
     "material_removed": false
    },
    "published_at": "2026-10-28T22:54:57.000Z",
    "detected_at": "2026-10-28T23:10:17.599Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-79e1a08969ba",
     "display_name": "Lorient — Stade Brestois",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-02T19:45:00.000Z",
     "url": "/football/matches/lorient-vs-stade-brestois-2026-11-02/",
     "scoreline": "0-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Lorient 2-2 Stade Brestois",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-28T22:54:57.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-28T22:54:57.000Z",
     "detected_at": "2026-10-28T23:10:17.599Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Lorient 2-2 Stade Brestois",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Lorient 2-2 Stade Brestois"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "0-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Lorient 0-2 Stade Brestois."
    },
    "settlements": [
     {
      "operation_id": "9e7e595f180ca39c0c9c655cca3a4452007dbe83eea37d638bb80d737197cfe3",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.3000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-02T07:17:58.320Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-brest-prediction-team-news-lineups_607901.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Lorient 2-2 Stade Brestois"
   }
  },
  {
   "record_id": "n-d8a0c889c909b59a37884963",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-d8a0c889c909b59a37884963",
   "match": "Olympique de Marseille v Toulouse",
   "match_url": "/football/matches/olympique-de-marseille-vs-toulouse-2026-11-01/",
   "kickoff": "2026-11-01T19:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 65.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Olympique de Marseille 3-2 Toulouse",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-30T01:49:33.000Z",
   "recorded_at": "2026-10-30T02:10:04.703Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-d8a0c889c909b59a37884963",
    "quote_text": "We say: Marseille 3-2 Toulouse",
    "fragment_from": 3201,
    "fragment_to": 3231,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "8638c5934a8572e43ed3e369be3166fc11a2e8eb80adec4ff33165f80261e54d",
     "material_removed": false
    },
    "published_at": "2026-10-30T01:49:33.000Z",
    "detected_at": "2026-10-30T02:10:04.703Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-5fbdfb317815",
     "display_name": "Olympique de Marseille — Toulouse",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-01T19:45:00.000Z",
     "url": "/football/matches/olympique-de-marseille-vs-toulouse-2026-11-01/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Olympique de Marseille 3-2 Toulouse",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-30T01:49:33.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-30T01:49:33.000Z",
     "detected_at": "2026-10-30T02:10:04.703Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Olympique de Marseille 3-2 Toulouse",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "3-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Olympique de Marseille 3-2 Toulouse"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Olympique de Marseille 2-0 Toulouse."
    },
    "settlements": [
     {
      "operation_id": "bb4bcc80c62ad94b6228b07bb148ee3465aad66f5ec33477fe227911308e3f34",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Olympique de Marseille",
      "decimal_odds": "1.9100",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 9100,
      "executed_at": "2026-11-01T18:52:22.766Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/marseille/preview/marseille-vs-toulouse-prediction-team-news-lineups_608032.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Olympique de Marseille 3-2 Toulouse"
   }
  },
  {
   "record_id": "n-9f09f783af04655eb9cc2867",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-9f09f783af04655eb9cc2867",
   "match": "Paris FC v Monaco",
   "match_url": "/football/matches/paris-fc-vs-monaco-2026-11-01/",
   "kickoff": "2026-11-01T16:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 61.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Paris FC 1-2 Monaco",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "3-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-30T02:38:41.000Z",
   "recorded_at": "2026-10-30T03:10:21.514Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-9f09f783af04655eb9cc2867",
    "quote_text": "We say: Paris FC 1-2 Monaco",
    "fragment_from": 3694,
    "fragment_to": 3721,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-monaco-prediction-team-news-lineups_608036.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "d84e9e75ef068eedc923c9d2b32f887a93e64557d9bc78b0d47a6140429986f1",
     "material_removed": false
    },
    "published_at": "2026-10-30T02:38:41.000Z",
    "detected_at": "2026-10-30T03:10:21.514Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-57a71cb0caed",
     "display_name": "Paris FC — Monaco",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-01T16:15:00.000Z",
     "url": "/football/matches/paris-fc-vs-monaco-2026-11-01/",
     "scoreline": "3-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Paris FC 1-2 Monaco",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-30T02:38:41.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-30T02:38:41.000Z",
     "detected_at": "2026-10-30T03:10:21.514Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Paris FC 1-2 Monaco",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Paris FC 1-2 Monaco"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "3-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Paris FC 3-1 Monaco."
    },
    "settlements": [
     {
      "operation_id": "c09d3ece222081dcefaf109e1e9416055379d483fbc80b261e5f2920c939a03d",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Monaco",
      "decimal_odds": "2.9500",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-11-01T15:44:12.288Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-monaco-prediction-team-news-lineups_608036.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Paris FC 1-2 Monaco"
   }
  },
  {
   "record_id": "n-84c578d882f8c913d1df2ef6",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-84c578d882f8c913d1df2ef6",
   "match": "Olympique Lyonnais v Angers",
   "match_url": "/football/matches/olympique-lyonnais-vs-angers-2026-11-01/",
   "kickoff": "2026-11-01T16:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 88.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Olympique Lyonnais 1-0 Angers",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T23:19:21.000Z",
   "recorded_at": "2026-10-29T00:10:07.580Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.4000",
    "result": "Won",
    "points_hundredths": 4000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-84c578d882f8c913d1df2ef6",
    "quote_text": "We say: Lyon 1-0 Angers",
    "fragment_from": 3409,
    "fragment_to": 3432,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "05ead8e3900d1558954b61ebe33cfd80ef30ada2899fcf2cd7b28cfda4a5ecae",
     "material_removed": false
    },
    "published_at": "2026-10-28T23:19:21.000Z",
    "detected_at": "2026-10-29T00:10:07.580Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-625be040951a",
     "display_name": "Olympique Lyonnais — Angers",
     "competition_name": "Ligue 1",
     "starts_at": "2026-11-01T16:15:00.000Z",
     "url": "/football/matches/olympique-lyonnais-vs-angers-2026-11-01/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Olympique Lyonnais 1-0 Angers",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-28T23:19:21.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-28T23:19:21.000Z",
     "detected_at": "2026-10-29T00:10:07.580Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Olympique Lyonnais 1-0 Angers",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Olympique Lyonnais 1-0 Angers"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Olympique Lyonnais 2-0 Angers."
    },
    "settlements": [
     {
      "operation_id": "c490db41c2b1583168df188077c1a059d24cfd9bca820242795651ee5a2a1acf",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Olympique Lyonnais",
      "decimal_odds": "1.4000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4000,
      "executed_at": "2026-10-31T13:21:36.851Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-angers-prediction-team-news-lineups_607902.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Olympique Lyonnais 1-0 Angers"
   }
  },
  {
   "record_id": "n-034eed5246de2c55a8f69393",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-034eed5246de2c55a8f69393",
   "match": "Lille v RC Lens",
   "match_url": "/football/matches/lille-vs-rc-lens-2026-10-30/",
   "kickoff": "2026-10-30T20:05:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 65.9,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Lille 1-0 RC Lens",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Won",
   "final_score": "1-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T01:56:06.000Z",
   "recorded_at": "2026-10-28T02:09:58.480Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.4000",
    "result": "Won",
    "points_hundredths": 14000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-034eed5246de2c55a8f69393",
    "quote_text": "We say: Lille 1-0 Lens",
    "fragment_from": 3942,
    "fragment_to": 3964,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "21d95ab912edc6d40740a012a7a84c6a1cd7ec5c418364a7370186a88621f374",
     "material_removed": false
    },
    "published_at": "2026-10-28T01:56:06.000Z",
    "detected_at": "2026-10-28T02:09:58.480Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-0154b7c67113",
     "display_name": "Lille — RC Lens",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-30T20:05:00.000Z",
     "url": "/football/matches/lille-vs-rc-lens-2026-10-30/",
     "scoreline": "1-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Lille 1-0 RC Lens",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "win",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-28T01:56:06.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-28T01:56:06.000Z",
     "detected_at": "2026-10-28T02:09:58.480Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Lille 1-0 RC Lens",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Lille 1-0 RC Lens"
    },
    "author_claim_outcome": {
     "result": "win",
     "scoreline": "1-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Matched: the final score was Lille 1-0 RC Lens."
    },
    "settlements": [
     {
      "operation_id": "9d32d5b0e3724e42e655abfa3e0626ec68bb387ddd3d99ef31b24fc060f8c205",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Lille",
      "decimal_odds": "2.4000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 14000,
      "executed_at": "2026-10-30T05:06:58.141Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-lens-prediction-team-news-lineups_607840.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Lille 1-0 RC Lens"
   }
  },
  {
   "record_id": "n-7ccdf8d0f698632765fba401",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-7ccdf8d0f698632765fba401",
   "match": "Nice v Stade Rennais",
   "match_url": "/football/matches/nice-vs-stade-rennais-2026-10-30/",
   "kickoff": "2026-10-30T18:00:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 41.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Nice 1-2 Stade Rennais",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "5-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T23:23:16.000Z",
   "recorded_at": "2026-10-29T00:10:04.272Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-7ccdf8d0f698632765fba401",
    "quote_text": "We say: Nice 1-2 Rennes",
    "fragment_from": 3785,
    "fragment_to": 3808,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "38c85d976fc06dcf8dd141d12c2b46cc8fb7851ee0e3c7651c2e9f36939d1e66",
     "material_removed": false
    },
    "published_at": "2026-10-28T23:23:16.000Z",
    "detected_at": "2026-10-29T00:10:04.272Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-ec6fbfaa0001",
     "display_name": "Nice — Stade Rennais",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-30T18:00:00.000Z",
     "url": "/football/matches/nice-vs-stade-rennais-2026-10-30/",
     "scoreline": "5-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Nice 1-2 Stade Rennais",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-28T23:23:16.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-28T23:23:16.000Z",
     "detected_at": "2026-10-29T00:10:04.272Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Nice 1-2 Stade Rennais",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Nice 1-2 Stade Rennais"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "5-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Nice 5-2 Stade Rennais."
    },
    "settlements": [
     {
      "operation_id": "ad46eec1d948d01653f521883fbd977d9df55ea2af6d912091a2e879454eb683",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Stade Rennais",
      "decimal_odds": "2.3700",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-30T05:30:00.278Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-rennes-prediction-team-news-lineups_607903.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Nice 1-2 Stade Rennais"
   }
  },
  {
   "record_id": "n-16a464d42bd67e87edd5cac1",
   "url": "/authors/joel-lefevre/picks/4/#pick-n-16a464d42bd67e87edd5cac1",
   "match": "Le Havre v Paris Saint-Germain",
   "match_url": "/football/matches/le-havre-vs-paris-saint-germain-2026-10-30/",
   "kickoff": "2026-10-30T18:00:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 63.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Le Havre 0-2 Paris Saint-Germain",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-5",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T01:49:01.000Z",
   "recorded_at": "2026-10-28T02:09:59.834Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-16a464d42bd67e87edd5cac1",
    "quote_text": "We say: Le Havre 0-2 Paris Saint-Germain",
    "fragment_from": 4061,
    "fragment_to": 4101,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "a89458e9f6ebc7ad2e395d84d584976204111f994f09340b1207c67de1a5f3f8",
     "material_removed": false
    },
    "published_at": "2026-10-28T01:49:01.000Z",
    "detected_at": "2026-10-28T02:09:59.834Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-093cac49e8f6",
     "display_name": "Le Havre — Paris Saint-Germain",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-30T18:00:00.000Z",
     "url": "/football/matches/le-havre-vs-paris-saint-germain-2026-10-30/",
     "scoreline": "1-5",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Le Havre 0-2 Paris Saint-Germain",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-28T01:49:01.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-28T01:49:01.000Z",
     "detected_at": "2026-10-28T02:09:59.834Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Le Havre 0-2 Paris Saint-Germain",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Le Havre 0-2 Paris Saint-Germain"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-5",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Le Havre 1-5 Paris Saint-Germain."
    },
    "settlements": [
     {
      "operation_id": "76b65aefe6c18e8353149f72043aeadba4f1610e1bce9dc0bc6b98dc970ba0c5",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Paris Saint-Germain",
      "decimal_odds": "1.2400",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 2400,
      "executed_at": "2026-10-30T05:46:54.431Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-psg-prediction-team-news-lineups_607838.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Le Havre 0-2 Paris Saint-Germain"
   }
  },
  {
   "record_id": "n-79f7d0771501f6784308114f",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-79f7d0771501f6784308114f",
   "match": "Paris Saint-Germain v Olympique Lyonnais",
   "match_url": "/football/matches/paris-saint-germain-vs-olympique-lyonnais-2026-10-26/",
   "kickoff": "2026-10-26T19:30:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 89.3,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Paris Saint-Germain 2-1 Olympique Lyonnais",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-23T01:02:27.000Z",
   "recorded_at": "2026-10-23T02:10:18.093Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.4450",
    "result": "Won",
    "points_hundredths": 4450,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-79f7d0771501f6784308114f",
    "quote_text": "We say: Paris Saint-Germain 2-1 Lyon",
    "fragment_from": 4773,
    "fragment_to": 4809,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "cbc337e4121f156ead56997b9bd9cb522d240a9b78ef97b246a7c70a186b521a",
     "material_removed": false
    },
    "published_at": "2026-10-23T01:02:27.000Z",
    "detected_at": "2026-10-23T02:10:18.093Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-4bf1ea244970",
     "display_name": "Paris Saint-Germain — Olympique Lyonnais",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-26T19:30:00.000Z",
     "url": "/football/matches/paris-saint-germain-vs-olympique-lyonnais-2026-10-26/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Paris Saint-Germain 2-1 Olympique Lyonnais",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-23T01:02:27.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-23T01:02:27.000Z",
     "detected_at": "2026-10-23T02:10:18.093Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Paris Saint-Germain 2-1 Olympique Lyonnais",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Paris Saint-Germain 2-1 Olympique Lyonnais"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Paris Saint-Germain 2-0 Olympique Lyonnais."
    },
    "settlements": [
     {
      "operation_id": "f6efbf884f27842434f2570f0b507dd83317e058b93a75a0fe879930d620ee6f",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Paris Saint-Germain",
      "decimal_odds": "1.4450",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4450,
      "executed_at": "2026-10-24T15:02:26.679Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/psg/preview/psg-vs-lyon-prediction-team-news-lineups_607509.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Paris Saint-Germain 2-1 Olympique Lyonnais"
   }
  },
  {
   "record_id": "n-171f5a5dfa2eda1773de32ee",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-171f5a5dfa2eda1773de32ee",
   "match": "Stade Rennais v RC Strasbourg",
   "match_url": "/football/matches/stade-rennais-vs-rc-strasbourg-2026-10-25/",
   "kickoff": "2026-10-25T16:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 63.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Stade Rennais 1-1 RC Strasbourg",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "3-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-23T00:14:34.000Z",
   "recorded_at": "2026-10-23T01:10:07.360Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.7500",
    "result": "Won",
    "points_hundredths": 7500,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-171f5a5dfa2eda1773de32ee",
    "quote_text": "We say: Rennes 1-1 Strasbourg",
    "fragment_from": 3855,
    "fragment_to": 3884,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "59b4b82e93fd39037f349f71c45bb9abb2802b4529ea8a18cb8602122402e204",
     "material_removed": false
    },
    "published_at": "2026-10-23T00:14:34.000Z",
    "detected_at": "2026-10-23T01:10:07.360Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-d194cb14109e",
     "display_name": "Stade Rennais — RC Strasbourg",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-25T16:15:00.000Z",
     "url": "/football/matches/stade-rennais-vs-rc-strasbourg-2026-10-25/",
     "scoreline": "3-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Stade Rennais 1-1 RC Strasbourg",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-23T00:14:34.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-23T00:14:34.000Z",
     "detected_at": "2026-10-23T01:10:07.360Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Stade Rennais 1-1 RC Strasbourg",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Stade Rennais 1-1 RC Strasbourg"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "3-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Stade Rennais 3-0 RC Strasbourg."
    },
    "settlements": [
     {
      "operation_id": "b8699011c87ef64d4adca5132fc20cd9ca1ece84d92035d727120eaea4c13ffb",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "4.2400",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-24T09:37:21.699Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-strasbourg-prediction-team-news-lineups_607506.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Stade Rennais 1-1 RC Strasbourg"
   }
  },
  {
   "record_id": "n-c29aedb6eb5a0b02e0d05993",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-c29aedb6eb5a0b02e0d05993",
   "match": "Monaco v Lille",
   "match_url": "/football/matches/monaco-vs-lille-2026-10-25/",
   "kickoff": "2026-10-25T14:00:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 60.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Monaco 1-1 Lille",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Won",
   "final_score": "1-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-23T00:50:05.000Z",
   "recorded_at": "2026-10-23T01:10:05.398Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.0700",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-c29aedb6eb5a0b02e0d05993",
    "quote_text": "We say: Monaco 1-1 Lille",
    "fragment_from": 4205,
    "fragment_to": 4229,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-lille-prediction-team-news-lineups_607508.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "d1764e7e134fa9d802838b163467d95afc93d14af94c3cb0f31bca1428cf4444",
     "material_removed": false
    },
    "published_at": "2026-10-23T00:50:05.000Z",
    "detected_at": "2026-10-23T01:10:05.398Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-4e7825289b07",
     "display_name": "Monaco — Lille",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-25T14:00:00.000Z",
     "url": "/football/matches/monaco-vs-lille-2026-10-25/",
     "scoreline": "1-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Monaco 1-1 Lille",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "win",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-23T00:50:05.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-23T00:50:05.000Z",
     "detected_at": "2026-10-23T01:10:05.398Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Monaco 1-1 Lille",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Monaco 1-1 Lille"
    },
    "author_claim_outcome": {
     "result": "win",
     "scoreline": "1-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Matched: the final score was Monaco 1-1 Lille."
    },
    "settlements": [
     {
      "operation_id": "8845af1d78825701f9ab2310b5f65702b52f8eb6ca362370cebaf3b59da0db1f",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.4400",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 24400,
      "executed_at": "2026-10-24T09:37:21.769Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-lille-prediction-team-news-lineups_607508.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Monaco 1-1 Lille"
   }
  },
  {
   "record_id": "n-0498a6ec42cc8d3acdf19c7f",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-0498a6ec42cc8d3acdf19c7f",
   "match": "New York Red Bulls v Inter Miami CF",
   "match_url": "/football/matches/new-york-red-bulls-vs-inter-miami-cf-2026-10-24/",
   "kickoff": "2026-10-24T21:30:00.000Z",
   "competition": "MLS",
   "lead_hours": 70.3,
   "market_code": "correct_score_market",
   "author_said": "Correct score: New York Red Bulls 0-3 Inter Miami CF",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-21T22:21:16.000Z",
   "recorded_at": "2026-10-21T23:10:31.581Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "1.8696",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-0498a6ec42cc8d3acdf19c7f",
    "quote_text": "We say: New York Red Bulls 0-3 Inter Miami",
    "fragment_from": 3809,
    "fragment_to": 3851,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "8a48ab499c52d8a873721ae49fabed472d5ada92407490f2fbe913ec7bda487e",
     "material_removed": false
    },
    "published_at": "2026-10-21T22:21:16.000Z",
    "detected_at": "2026-10-21T23:10:31.581Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-450a933485e0",
     "display_name": "New York Red Bulls — Inter Miami CF",
     "competition_name": "MLS",
     "starts_at": "2026-10-24T21:30:00.000Z",
     "url": "/football/matches/new-york-red-bulls-vs-inter-miami-cf-2026-10-24/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "New York Red Bulls 0-3 Inter Miami CF",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-21T22:21:16.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-21T22:21:16.000Z",
     "detected_at": "2026-10-21T23:10:31.581Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "New York Red Bulls 0-3 Inter Miami CF",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-3",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: New York Red Bulls 0-3 Inter Miami CF"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was New York Red Bulls 2-0 Inter Miami CF."
    },
    "settlements": [
     {
      "operation_id": "c520ab61fe45713ad421b451fe0dfd8d7b3a15de4152c72178f8b904798b5a0b",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Inter Miami CF",
      "decimal_odds": "1.8696",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-24T00:53:45.291Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/red-bulls/preview/ny-red-bulls-vs-inter-miami-prediction-team-news-lineups_607389.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "New York Red Bulls 0-3 Inter Miami CF"
   }
  },
  {
   "record_id": "n-8b5b77390c6fb97d9d34c723",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-8b5b77390c6fb97d9d34c723",
   "match": "RC Lens v Paris FC",
   "match_url": "/football/matches/rc-lens-vs-paris-fc-2026-10-24/",
   "kickoff": "2026-10-24T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 1.8,
   "market_code": "correct_score_market",
   "author_said": "Correct score: RC Lens 1-1 Paris FC",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-21T22:39:00.000Z",
   "recorded_at": "2026-10-24T16:55:45.588Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.5000",
    "result": "Won",
    "points_hundredths": 15000,
    "picked_favourite": false
   },
   "platform": "Sports Mole, RSS feed",
   "correction": null,
   "evidence": {
    "observation_id": "n-8b5b77390c6fb97d9d34c723",
    "quote_text": "We say: Lens 1-1 Paris FC",
    "fragment_from": 4426,
    "fragment_to": 4451,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-paris-fc-prediction-team-news-lineups_607391.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "4d9ecdb8c50d18f8bd1834aa6afa69559724cbbfb4697abf7a6f669d02492cee",
     "material_removed": false
    },
    "published_at": "2026-10-21T22:39:00.000Z",
    "detected_at": "2026-10-24T16:55:45.588Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-1c1b0f73b0a0",
     "display_name": "RC Lens — Paris FC",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-24T18:45:00.000Z",
     "url": "/football/matches/rc-lens-vs-paris-fc-2026-10-24/",
     "scoreline": "2-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "RC Lens 1-1 Paris FC",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-21T22:39:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-21T22:39:00.000Z",
     "detected_at": "2026-10-24T16:55:45.588Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "RC Lens 1-1 Paris FC",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: RC Lens 1-1 Paris FC"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was RC Lens 2-1 Paris FC."
    },
    "settlements": [
     {
      "operation_id": "07c1624cf0454f5070324161aef49fa29299ffd810236f214e9b30f38d958a82",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.6000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-24T17:01:07.764Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lens/preview/lens-vs-paris-fc-prediction-team-news-lineups_607391.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "RC Lens 1-1 Paris FC"
   }
  },
  {
   "record_id": "n-ea258311e68e58d3e0b0c555",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-ea258311e68e58d3e0b0c555",
   "match": "Stade Brestois v Nice",
   "match_url": "/football/matches/stade-brestois-vs-nice-2026-10-23/",
   "kickoff": "2026-10-23T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 69.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Stade Brestois 1-2 Nice",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Won",
   "final_score": "1-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-20T20:41:28.000Z",
   "recorded_at": "2026-10-20T21:10:13.474Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.2000",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-ea258311e68e58d3e0b0c555",
    "quote_text": "We say: Brest 1-2 Nice",
    "fragment_from": 3692,
    "fragment_to": 3714,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/brest/preview/brest-vs-nice-prediction-team-news-lineups_607322.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "f24b758092614173e080b0649a48f1d88daf26ba88ad0766371c97a7cd453982",
     "material_removed": false
    },
    "published_at": "2026-10-20T20:41:28.000Z",
    "detected_at": "2026-10-20T21:10:13.474Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-1327a569d107",
     "display_name": "Stade Brestois — Nice",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-23T18:45:00.000Z",
     "url": "/football/matches/stade-brestois-vs-nice-2026-10-23/",
     "scoreline": "1-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Stade Brestois 1-2 Nice",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "win",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-20T20:41:28.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-20T20:41:28.000Z",
     "detected_at": "2026-10-20T21:10:13.474Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Stade Brestois 1-2 Nice",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Stade Brestois 1-2 Nice"
    },
    "author_claim_outcome": {
     "result": "win",
     "scoreline": "1-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Matched: the final score was Stade Brestois 1-2 Nice."
    },
    "settlements": [
     {
      "operation_id": "c8f4a237b99d76fde6e75e10c37162be5aaebe5d9d50871c80a6b9927e75d075",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Nice",
      "decimal_odds": "3.1000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 21000,
      "executed_at": "2026-10-23T00:46:49.093Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/brest/preview/brest-vs-nice-prediction-team-news-lineups_607322.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Stade Brestois 1-2 Nice"
   }
  },
  {
   "record_id": "n-88250af69e4ecaf9ec4bb8a7",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-88250af69e4ecaf9ec4bb8a7",
   "match": "Sturm Graz v Olympique de Marseille",
   "match_url": "/football/matches/sturm-graz-vs-olympique-de-marseille-2026-10-22/",
   "kickoff": "2026-10-22T16:45:00.000Z",
   "competition": "UEFA Europa League",
   "lead_hours": 66.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Sturm Graz 1-1 Olympique de Marseille",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-19T21:09:50.000Z",
   "recorded_at": "2026-10-19T22:10:17.090Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "2.0000",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-88250af69e4ecaf9ec4bb8a7",
    "quote_text": "We say: Sturm Graz 1-1 Marseille",
    "fragment_from": 4244,
    "fragment_to": 4276,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/sturm-graz/europa-league/preview/sturm-graz-vs-marseille-prediction-team-news-lineups_607263.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "7196c19f58fb97288df34164b8e4f5aa4a5b21462d544d55e2321c0ef5e64053",
     "material_removed": false
    },
    "published_at": "2026-10-19T21:09:50.000Z",
    "detected_at": "2026-10-19T22:10:17.090Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-42828e55f24a",
     "display_name": "Sturm Graz — Olympique de Marseille",
     "competition_name": "UEFA Europa League",
     "starts_at": "2026-10-22T16:45:00.000Z",
     "url": "/football/matches/sturm-graz-vs-olympique-de-marseille-2026-10-22/",
     "scoreline": "1-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Sturm Graz 1-1 Olympique de Marseille",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-19T21:09:50.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-19T21:09:50.000Z",
     "detected_at": "2026-10-19T22:10:17.090Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Sturm Graz 1-1 Olympique de Marseille",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Sturm Graz 1-1 Olympique de Marseille"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Sturm Graz 1-0 Olympique de Marseille."
    },
    "settlements": [
     {
      "operation_id": "67dc5d50f26b8b32ddcf9ed4c6983db087181b27bae073011e255035ef483a20",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.6000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-22T00:48:31.691Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/sturm-graz/europa-league/preview/sturm-graz-vs-marseille-prediction-team-news-lineups_607263.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Sturm Graz 1-1 Olympique de Marseille"
   }
  },
  {
   "record_id": "n-b472e58059030f8c95f5a609",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-b472e58059030f8c95f5a609",
   "match": "Olympique Lyonnais v Nice",
   "match_url": "/football/matches/olympique-lyonnais-vs-nice-2026-10-18/",
   "kickoff": "2026-10-18T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 66.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Olympique Lyonnais 1-0 Nice",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-15T23:13:56.000Z",
   "recorded_at": "2026-10-16T00:09:51.110Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.6579",
    "result": "Won",
    "points_hundredths": 6579,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-b472e58059030f8c95f5a609",
    "quote_text": "We say: Lyon 1-0 Nice",
    "fragment_from": 3732,
    "fragment_to": 3753,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-nice-prediction-team-news-lineups_607007.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "ed3f30967102a7173aa6da6da902d48db4c14835fe8428b08fdd71d6acdde7ac",
     "material_removed": false
    },
    "published_at": "2026-10-15T23:13:56.000Z",
    "detected_at": "2026-10-16T00:09:51.110Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-06454a8de539",
     "display_name": "Olympique Lyonnais — Nice",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-18T18:45:00.000Z",
     "url": "/football/matches/olympique-lyonnais-vs-nice-2026-10-18/",
     "scoreline": "2-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Olympique Lyonnais 1-0 Nice",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-15T23:13:56.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-15T23:13:56.000Z",
     "detected_at": "2026-10-16T00:09:51.110Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Olympique Lyonnais 1-0 Nice",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Olympique Lyonnais 1-0 Nice"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Olympique Lyonnais 2-1 Nice."
    },
    "settlements": [
     {
      "operation_id": "b9238618830ddfbc1c8a1453253ec649531078e9324af4010a5756540dbce6f7",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Olympique Lyonnais",
      "decimal_odds": "1.6579",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 6579,
      "executed_at": "2026-10-17T18:12:05.068Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lyon/preview/lyon-vs-nice-prediction-team-news-lineups_607007.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Olympique Lyonnais 1-0 Nice"
   }
  },
  {
   "record_id": "n-7306fca13a22680eb5db4cef",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-7306fca13a22680eb5db4cef",
   "match": "Paris FC v Stade Rennais",
   "match_url": "/football/matches/paris-fc-vs-stade-rennais-2026-10-18/",
   "kickoff": "2026-10-18T15:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 63.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Paris FC 1-2 Stade Rennais",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "4-3",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-15T23:18:00.000Z",
   "recorded_at": "2026-10-16T00:09:50.655Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.2500",
    "result": "Won",
    "points_hundredths": 12500,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-7306fca13a22680eb5db4cef",
    "quote_text": "We say: Paris FC 1-2 Rennes",
    "fragment_from": 3908,
    "fragment_to": 3935,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-rennes-prediction-team-news-lineups_607008.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "225045b0cad62a525ba469ef252b7202b5455de18b21194b8a0bee87d735195e",
     "material_removed": false
    },
    "published_at": "2026-10-15T23:18:00.000Z",
    "detected_at": "2026-10-16T00:09:50.655Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-7947b3912313",
     "display_name": "Paris FC — Stade Rennais",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-18T15:15:00.000Z",
     "url": "/football/matches/paris-fc-vs-stade-rennais-2026-10-18/",
     "scoreline": "4-3",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Paris FC 1-2 Stade Rennais",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-15T23:18:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-15T23:18:00.000Z",
     "detected_at": "2026-10-16T00:09:50.655Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Paris FC 1-2 Stade Rennais",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Paris FC 1-2 Stade Rennais"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "4-3",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Paris FC 4-3 Stade Rennais."
    },
    "settlements": [
     {
      "operation_id": "52f110fa01a245489db117a03c30d588b49de0cff1c161ce93730a2d8fb34f58",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Stade Rennais",
      "decimal_odds": "3.0000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-17T18:03:20.832Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/paris-fc/preview/paris-fc-vs-rennes-prediction-team-news-lineups_607008.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Paris FC 1-2 Stade Rennais"
   }
  },
  {
   "record_id": "n-a02b74fb1bd89b22e681256c",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-a02b74fb1bd89b22e681256c",
   "match": "Lorient v Monaco",
   "match_url": "/football/matches/lorient-vs-monaco-2026-10-18/",
   "kickoff": "2026-10-18T15:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 63.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Lorient 1-1 Monaco",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-15T23:24:45.000Z",
   "recorded_at": "2026-10-16T00:09:49.761Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "2.0400",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-a02b74fb1bd89b22e681256c",
    "quote_text": "We say: Lorient 1-1 Monaco",
    "fragment_from": 3824,
    "fragment_to": 3850,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-monaco-prediction-team-news-lineups_607009.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "87fb67353f53b291e0efa2c6b021903c6f82df3d2c446d6ada0c759c8a6469ba",
     "material_removed": false
    },
    "published_at": "2026-10-15T23:24:45.000Z",
    "detected_at": "2026-10-16T00:09:49.761Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-0433dfe831d6",
     "display_name": "Lorient — Monaco",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-18T15:15:00.000Z",
     "url": "/football/matches/lorient-vs-monaco-2026-10-18/",
     "scoreline": "1-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Lorient 1-1 Monaco",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-15T23:24:45.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-15T23:24:45.000Z",
     "detected_at": "2026-10-16T00:09:49.761Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Lorient 1-1 Monaco",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Lorient 1-1 Monaco"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Lorient 1-0 Monaco."
    },
    "settlements": [
     {
      "operation_id": "284e328a30bffd0fd54db210476a7a1c253df7929ccf96b0c4ff572cf3052b29",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.4000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-18T11:27:57.661Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-monaco-prediction-team-news-lineups_607009.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Lorient 1-1 Monaco"
   }
  },
  {
   "record_id": "n-ee08676766e1b69169a0ffdf",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-ee08676766e1b69169a0ffdf",
   "match": "Atlanta United v Inter Miami CF",
   "match_url": "/football/matches/atlanta-united-vs-inter-miami-cf-2026-10-17/",
   "kickoff": "2026-10-17T23:30:00.000Z",
   "competition": "MLS",
   "lead_hours": 68.3,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Atlanta United 1-3 Inter Miami CF",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Won",
   "final_score": "1-3",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-15T02:32:51.000Z",
   "recorded_at": "2026-10-15T03:09:45.708Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "1.8333",
    "result": "Won",
    "points_hundredths": 8333,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-ee08676766e1b69169a0ffdf",
    "quote_text": "We say: Atlanta United 1-3 Inter Miami",
    "fragment_from": 3613,
    "fragment_to": 3651,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/atlanta-united/preview/atlanta-vs-inter-miami-prediction-team-news-lineups_606907.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "b5acb9b48e0046418a8e4b7e909d22ca357d183ca4289cf183877b661bf823f4",
     "material_removed": false
    },
    "published_at": "2026-10-15T02:32:51.000Z",
    "detected_at": "2026-10-15T03:09:45.708Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-01498235d929",
     "display_name": "Atlanta United — Inter Miami CF",
     "competition_name": "MLS",
     "starts_at": "2026-10-17T23:30:00.000Z",
     "url": "/football/matches/atlanta-united-vs-inter-miami-cf-2026-10-17/",
     "scoreline": "1-3",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Atlanta United 1-3 Inter Miami CF",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "win",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-15T02:32:51.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-15T02:32:51.000Z",
     "detected_at": "2026-10-15T03:09:45.708Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Atlanta United 1-3 Inter Miami CF",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-3",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Atlanta United 1-3 Inter Miami CF"
    },
    "author_claim_outcome": {
     "result": "win",
     "scoreline": "1-3",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Matched: the final score was Atlanta United 1-3 Inter Miami CF."
    },
    "settlements": [
     {
      "operation_id": "82f9e090c60d84f8da6077f1f642e1b72113a1ceedbecbe1e87a287ac15d8e38",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Inter Miami CF",
      "decimal_odds": "1.8333",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 8333,
      "executed_at": "2026-10-16T03:13:03.618Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/atlanta-united/preview/atlanta-vs-inter-miami-prediction-team-news-lineups_606907.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Atlanta United 1-3 Inter Miami CF"
   }
  },
  {
   "record_id": "n-bb9b7c6ec0c86af82b650876",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-bb9b7c6ec0c86af82b650876",
   "match": "Lille v Stade Brestois",
   "match_url": "/football/matches/lille-vs-stade-brestois-2026-10-17/",
   "kickoff": "2026-10-17T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 68.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Lille 2-0 Stade Brestois",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-14T21:22:17.000Z",
   "recorded_at": "2026-10-14T22:09:50.142Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.8000",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-bb9b7c6ec0c86af82b650876",
    "quote_text": "We say: Lille 2-0 Brest",
    "fragment_from": 3760,
    "fragment_to": 3783,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-brest-prediction-team-news-lineups_606902.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "9e9ce76a3045cf7416f58e1a344a0798f50a47136d241f8341b65b87237078da",
     "material_removed": false
    },
    "published_at": "2026-10-14T21:22:17.000Z",
    "detected_at": "2026-10-14T22:09:50.142Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-fcb090a96d57",
     "display_name": "Lille — Stade Brestois",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-17T18:45:00.000Z",
     "url": "/football/matches/lille-vs-stade-brestois-2026-10-17/",
     "scoreline": "1-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Lille 2-0 Stade Brestois",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-14T21:22:17.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-14T21:22:17.000Z",
     "detected_at": "2026-10-14T22:09:50.142Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Lille 2-0 Stade Brestois",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Lille 2-0 Stade Brestois"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Lille 1-1 Stade Brestois."
    },
    "settlements": [
     {
      "operation_id": "c4d18c9d2086f24f7f54fac5b0a1959d6adae05216f7058c53113e7bad9d36f7",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Lille",
      "decimal_odds": "1.8000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-15T20:58:15.209Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lille/preview/lille-vs-brest-prediction-team-news-lineups_606902.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Lille 2-0 Stade Brestois"
   }
  },
  {
   "record_id": "n-5481f2af0adf3ca30f14f159",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-5481f2af0adf3ca30f14f159",
   "match": "RC Strasbourg v Paris Saint-Germain",
   "match_url": "/football/matches/rc-strasbourg-vs-paris-saint-germain-2026-10-17/",
   "kickoff": "2026-10-17T15:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 64.1,
   "market_code": "correct_score_market",
   "author_said": "Correct score: RC Strasbourg 0-2 Paris Saint-Germain",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-3",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-14T22:49:57.000Z",
   "recorded_at": "2026-10-14T23:09:51.067Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "1.4000",
    "result": "Won",
    "points_hundredths": 4000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-5481f2af0adf3ca30f14f159",
    "quote_text": "We say: Strasbourg 0-2 Paris Saint-Germain",
    "fragment_from": 3783,
    "fragment_to": 3825,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-psg-prediction-team-news-lineups_606904.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "da70e563b19c4449052df0ecbd1b1183b6cd915706de5a3850d7138660284e67",
     "material_removed": false
    },
    "published_at": "2026-10-14T22:49:57.000Z",
    "detected_at": "2026-10-14T23:09:51.067Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-2e5ca9903f14",
     "display_name": "RC Strasbourg — Paris Saint-Germain",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-17T15:15:00.000Z",
     "url": "/football/matches/rc-strasbourg-vs-paris-saint-germain-2026-10-17/",
     "scoreline": "1-3",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "RC Strasbourg 0-2 Paris Saint-Germain",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-14T22:49:57.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-14T22:49:57.000Z",
     "detected_at": "2026-10-14T23:09:51.067Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "RC Strasbourg 0-2 Paris Saint-Germain",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: RC Strasbourg 0-2 Paris Saint-Germain"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-3",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was RC Strasbourg 1-3 Paris Saint-Germain."
    },
    "settlements": [
     {
      "operation_id": "bd1a6475a86de78f7d2c8f4dbd87a13af31c60641279d6c020f534d68924cd21",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Paris Saint-Germain",
      "decimal_odds": "1.4000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4000,
      "executed_at": "2026-10-15T16:43:16.672Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/strasbourg/preview/strasbourg-vs-psg-prediction-team-news-lineups_606904.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "RC Strasbourg 0-2 Paris Saint-Germain"
   }
  },
  {
   "record_id": "n-cfb0e43916684cbbe2dc9df7",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-cfb0e43916684cbbe2dc9df7",
   "match": "CSKA Sofia v Monaco",
   "match_url": "/football/matches/cska-sofia-vs-monaco-2026-10-15/",
   "kickoff": "2026-10-15T16:45:00.000Z",
   "competition": "UEFA Conference League",
   "lead_hours": 64.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: CSKA Sofia 0-1 Monaco",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-12T23:33:33.000Z",
   "recorded_at": "2026-10-13T00:09:47.870Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-cfb0e43916684cbbe2dc9df7",
    "quote_text": "We say: CSKA Sofia 0-1 Monaco",
    "fragment_from": 3957,
    "fragment_to": 3986,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/cska-sofia/europa-conference-league/preview/cska-sofia-vs-monaco-prediction-team-news-lineups_606781.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "d32572ad5fe5655f1b68b4747773c270e849b9a6d3aea6a055b58dad32cc0a12",
     "material_removed": false
    },
    "published_at": "2026-10-12T23:33:33.000Z",
    "detected_at": "2026-10-13T00:09:47.870Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-57b608098a71",
     "display_name": "CSKA Sofia — Monaco",
     "competition_name": "UEFA Conference League",
     "starts_at": "2026-10-15T16:45:00.000Z",
     "url": "/football/matches/cska-sofia-vs-monaco-2026-10-15/",
     "scoreline": "1-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "CSKA Sofia 0-1 Monaco",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-12T23:33:33.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-12T23:33:33.000Z",
     "detected_at": "2026-10-13T00:09:47.870Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "CSKA Sofia 0-1 Monaco",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: CSKA Sofia 0-1 Monaco"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was CSKA Sofia 1-2 Monaco."
    },
    "settlements": [
     {
      "operation_id": "616da130f23c36f3fa2755b01ea37f0e96d841308f7b65fe5d635def635fbc47",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Monaco",
      "decimal_odds": "1.4750",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4750,
      "executed_at": "2026-10-22T12:25:11.350Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/cska-sofia/europa-conference-league/preview/cska-sofia-vs-monaco-prediction-team-news-lineups_606781.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "CSKA Sofia 0-1 Monaco"
   }
  },
  {
   "record_id": "n-576faeabed7c005b95ca555b",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-576faeabed7c005b95ca555b",
   "match": "Stade Rennais v Auxerre",
   "match_url": "/football/matches/stade-rennais-vs-auxerre-2026-10-11/",
   "kickoff": "2026-10-11T15:15:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 61.2,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Stade Rennais 2-0 Auxerre",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "4-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-09T01:19:00.000Z",
   "recorded_at": "2026-10-09T02:05:02.684Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.4202",
    "result": "Won",
    "points_hundredths": 4202,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-576faeabed7c005b95ca555b",
    "quote_text": "We say: Rennes 2-0 Auxerre",
    "fragment_from": 3400,
    "fragment_to": 3426,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-auxerre-prediction-team-news-lineups_606520.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "c49b80b71b3fdaedab1b722d9e7cb151ccba223c68568e368012f8c86cc4c4a1",
     "material_removed": false
    },
    "published_at": "2026-10-09T01:19:00.000Z",
    "detected_at": "2026-10-09T02:05:02.684Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-8736de637615",
     "display_name": "Stade Rennais — Auxerre",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-11T15:15:00.000Z",
     "url": "/football/matches/stade-rennais-vs-auxerre-2026-10-11/",
     "scoreline": "4-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Stade Rennais 2-0 Auxerre",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-09T01:19:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-09T01:19:00.000Z",
     "detected_at": "2026-10-09T02:05:02.684Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Stade Rennais 2-0 Auxerre",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Stade Rennais 2-0 Auxerre"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "4-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Stade Rennais 4-1 Auxerre."
    },
    "settlements": [
     {
      "operation_id": "e5a8e10b883a2fa43df50caecf3a1081354f0934336375e763c55dcfa44f1dc3",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Stade Rennais",
      "decimal_odds": "1.4202",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4202,
      "executed_at": "2026-10-10T23:35:07.549Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/rennes/preview/rennes-vs-auxerre-prediction-team-news-lineups_606520.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Stade Rennais 2-0 Auxerre"
   }
  },
  {
   "record_id": "n-b09e79181615b13fe3b369e7",
   "url": "/authors/joel-lefevre/picks/3/#pick-n-b09e79181615b13fe3b369e7",
   "match": "Nice v RC Strasbourg",
   "match_url": "/football/matches/nice-vs-rc-strasbourg-2026-10-11/",
   "kickoff": "2026-10-11T13:00:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 58.9,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Nice 1-1 RC Strasbourg",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-09T01:12:36.000Z",
   "recorded_at": "2026-10-09T02:05:05.587Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.3000",
    "result": "Won",
    "points_hundredths": 13000,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-b09e79181615b13fe3b369e7",
    "quote_text": "We say: Nice 1-1 Strasbourg",
    "fragment_from": 4055,
    "fragment_to": 4082,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-strasbourg-prediction-team-news-lineups_606519.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "93c2826e14d193ed4117157ea19102052fc1329f9b7db514b1a3ef84b48ba936",
     "material_removed": false
    },
    "published_at": "2026-10-09T01:12:36.000Z",
    "detected_at": "2026-10-09T02:05:05.587Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-98cb3d9d0835",
     "display_name": "Nice — RC Strasbourg",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-11T13:00:00.000Z",
     "url": "/football/matches/nice-vs-rc-strasbourg-2026-10-11/",
     "scoreline": "2-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Nice 1-1 RC Strasbourg",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-09T01:12:36.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-09T01:12:36.000Z",
     "detected_at": "2026-10-09T02:05:05.587Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Nice 1-1 RC Strasbourg",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Nice 1-1 RC Strasbourg"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Nice 2-1 RC Strasbourg."
    },
    "settlements": [
     {
      "operation_id": "e0218c7e556a0109603f1daf7d69b0b9f0bb63033b602cbb02d5d466668575c2",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.5900",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-10T23:35:07.544Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/nice/preview/nice-vs-strasbourg-prediction-team-news-lineups_606519.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Nice 1-1 RC Strasbourg"
   }
  },
  {
   "record_id": "n-ed714bab72bcea5af2840421",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-ed714bab72bcea5af2840421",
   "match": "Inter Miami CF v DC United",
   "match_url": "/football/matches/inter-miami-cf-vs-dc-united-2026-10-10/",
   "kickoff": "2026-10-10T23:30:00.000Z",
   "competition": "MLS",
   "lead_hours": 74.4,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Inter Miami CF 2-1 DC United",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "4-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-07T20:15:39.000Z",
   "recorded_at": "2026-10-07T21:07:16.414Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.3636",
    "result": "Won",
    "points_hundredths": 3636,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-ed714bab72bcea5af2840421",
    "quote_text": "We say: Inter Miami 2-1 DC United",
    "fragment_from": 3960,
    "fragment_to": 3993,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/inter-miami/preview/inter-miami-vs-dc-united-prediction-team-news-lineups_606403.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "d89dedccabfe3dd239eb55399e46cdec247af16808d2d891e6acf07929cf1402",
     "material_removed": false
    },
    "published_at": "2026-10-07T20:15:39.000Z",
    "detected_at": "2026-10-07T21:07:16.414Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-f1cd90c10693",
     "display_name": "Inter Miami CF — DC United",
     "competition_name": "MLS",
     "starts_at": "2026-10-10T23:30:00.000Z",
     "url": "/football/matches/inter-miami-cf-vs-dc-united-2026-10-10/",
     "scoreline": "4-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Inter Miami CF 2-1 DC United",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-07T20:15:39.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-07T20:15:39.000Z",
     "detected_at": "2026-10-07T21:07:16.414Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Inter Miami CF 2-1 DC United",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Inter Miami CF 2-1 DC United"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "4-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Inter Miami CF 4-0 DC United."
    },
    "settlements": [
     {
      "operation_id": "024a5dc82065c8e0dcee13b22b4784f1722db9366626c7401a75d44e3ab27a59",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Inter Miami CF",
      "decimal_odds": "1.3636",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 3636,
      "executed_at": "2026-10-10T23:35:09.842Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/inter-miami/preview/inter-miami-vs-dc-united-prediction-team-news-lineups_606403.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Inter Miami CF 2-1 DC United"
   }
  },
  {
   "record_id": "n-dd8b459e21efff5a5517ecce",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-dd8b459e21efff5a5517ecce",
   "match": "Lorient v Paris FC",
   "match_url": "/football/matches/lorient-vs-paris-fc-2026-10-10/",
   "kickoff": "2026-10-10T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 68.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Lorient 0-1 Paris FC",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-07T21:20:00.000Z",
   "recorded_at": "2026-10-07T22:07:38.182Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "2",
    "price": "2.2500",
    "result": "Lost",
    "points_hundredths": -10000,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-dd8b459e21efff5a5517ecce",
    "quote_text": "We say: Lorient 0-1 Paris FC",
    "fragment_from": 3641,
    "fragment_to": 3669,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-paris-fc-prediction-team-news-lineups_606405.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "fb9e68858e7ebc9597c63dab30f0150a4427d6c1603863592f2d4142fbdb03fa",
     "material_removed": false
    },
    "published_at": "2026-10-07T21:20:00.000Z",
    "detected_at": "2026-10-07T22:07:38.182Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-263d3387aa5a",
     "display_name": "Lorient — Paris FC",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-10T18:45:00.000Z",
     "url": "/football/matches/lorient-vs-paris-fc-2026-10-10/",
     "scoreline": "1-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Lorient 0-1 Paris FC",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-07T21:20:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-07T21:20:00.000Z",
     "detected_at": "2026-10-07T22:07:38.182Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Lorient 0-1 Paris FC",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Lorient 0-1 Paris FC"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Lorient 1-0 Paris FC."
    },
    "settlements": [
     {
      "operation_id": "6210d886f550dc5d14fefed5818917d16b1958971e24059a118b6bc269cd71c4",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Paris FC",
      "decimal_odds": "2.2500",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-10T23:35:09.826Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/lorient/preview/lorient-vs-paris-fc-prediction-team-news-lineups_606405.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Lorient 0-1 Paris FC"
   }
  },
  {
   "record_id": "n-cfa5c65f7894901dabf69e33",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-cfa5c65f7894901dabf69e33",
   "match": "Monaco v Toulouse",
   "match_url": "/football/matches/monaco-vs-toulouse-2026-10-10/",
   "kickoff": "2026-10-10T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 68.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Monaco 3-2 Toulouse",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-07T21:26:22.000Z",
   "recorded_at": "2026-10-07T22:07:37.168Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-cfa5c65f7894901dabf69e33",
    "quote_text": "We say: Monaco 3-2 Toulouse",
    "fragment_from": 4095,
    "fragment_to": 4122,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-toulouse-prediction-team-news-lineups_606406.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "df791da0ad45cf95ac87956b89acfe4488a12e9677709a03a204bd22e019cce3",
     "material_removed": false
    },
    "published_at": "2026-10-07T21:26:22.000Z",
    "detected_at": "2026-10-07T22:07:37.168Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-7c217a8de695",
     "display_name": "Monaco — Toulouse",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-10T18:45:00.000Z",
     "url": "/football/matches/monaco-vs-toulouse-2026-10-10/",
     "scoreline": "2-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Monaco 3-2 Toulouse",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-07T21:26:22.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-07T21:26:22.000Z",
     "detected_at": "2026-10-07T22:07:37.168Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Monaco 3-2 Toulouse",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "3-2",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Monaco 3-2 Toulouse"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Monaco 2-2 Toulouse."
    },
    "settlements": [
     {
      "operation_id": "1ae89ff2371a9c7f3dd4567cb6443e8def4e8501304936f7aaf94f00d2bcbb78",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Monaco",
      "decimal_odds": "1.5800",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-22T12:25:11.216Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/as-monaco/preview/monaco-vs-toulouse-prediction-team-news-lineups_606406.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Monaco 3-2 Toulouse"
   }
  },
  {
   "record_id": "n-4b2d2af8e8a6326d18054e2f",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-4b2d2af8e8a6326d18054e2f",
   "match": "Stade Brestois v Angers",
   "match_url": "/football/matches/stade-brestois-vs-angers-2026-10-10/",
   "kickoff": "2026-10-10T18:45:00.000Z",
   "competition": "Ligue 1",
   "lead_hours": 69.6,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Stade Brestois 0-0 Angers",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "5-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-07T20:20:00.000Z",
   "recorded_at": "2026-10-07T21:07:15.238Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "1.9524",
    "result": "Won",
    "points_hundredths": 9524,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-4b2d2af8e8a6326d18054e2f",
    "quote_text": "We say: Brest 0-0 Angers",
    "fragment_from": 3631,
    "fragment_to": 3655,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/brest/preview/brest-vs-angers-prediction-team-news-lineups_606404.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "20613b3e90d2fadf78a2077582b1c952709a0a3ab7915ac43bd598fe4ddc9304",
     "material_removed": false
    },
    "published_at": "2026-10-07T20:20:00.000Z",
    "detected_at": "2026-10-07T21:07:15.238Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-4673f9982057",
     "display_name": "Stade Brestois — Angers",
     "competition_name": "Ligue 1",
     "starts_at": "2026-10-10T18:45:00.000Z",
     "url": "/football/matches/stade-brestois-vs-angers-2026-10-10/",
     "scoreline": "5-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Stade Brestois 0-0 Angers",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-07T20:20:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-07T20:20:00.000Z",
     "detected_at": "2026-10-07T21:07:15.238Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Stade Brestois 0-0 Angers",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "0-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Stade Brestois 0-0 Angers"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "5-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Stade Brestois 5-1 Angers."
    },
    "settlements": [
     {
      "operation_id": "bae919a0170234736252127a6a6ddd9a787cbac4380576d8485f32bb805674b3",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.6000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-10T23:35:09.847Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/brest/preview/brest-vs-angers-prediction-team-news-lineups_606404.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Stade Brestois 0-0 Angers"
   }
  },
  {
   "record_id": "n-3d2e4ca7247ec2903f26d6e4",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-3d2e4ca7247ec2903f26d6e4",
   "match": "USA v Canada",
   "match_url": "/football/matches/usa-vs-canada-2026-10-07/",
   "kickoff": "2026-10-07T00:00:00.000Z",
   "competition": "International Soccer",
   "lead_hours": 51.0,
   "market_code": "correct_score_market",
   "author_said": "Correct score: USA 2-1 Canada",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-04T16:34:00.000Z",
   "recorded_at": "2026-10-04T21:01:52.702Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.0200",
    "result": "Won",
    "points_hundredths": 10200,
    "picked_favourite": true
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-3d2e4ca7247ec2903f26d6e4",
    "quote_text": "We say: USA 2-1 Canada",
    "fragment_from": 4069,
    "fragment_to": 4091,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-canada-prediction-team-news-lineups_606221.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "f59f1bbd7c04ca6f748a9814bf0e3e260b8ad6a7d1d506407b59cf67fd1e0c41",
     "material_removed": false
    },
    "published_at": "2026-10-04T16:34:00.000Z",
    "detected_at": "2026-10-04T21:01:52.702Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-eb4187e5e792",
     "display_name": "USA — Canada",
     "competition_name": "International Soccer",
     "starts_at": "2026-10-07T00:00:00.000Z",
     "url": "/football/matches/usa-vs-canada-2026-10-07/",
     "scoreline": "1-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "USA 2-1 Canada",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-04T16:34:00.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-04T16:34:00.000Z",
     "detected_at": "2026-10-04T21:01:52.702Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "USA 2-1 Canada",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: USA 2-1 Canada"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was USA 1-0 Canada."
    },
    "settlements": [
     {
      "operation_id": "9efef60ee62bbedfdd16f3121a762201ce7de53ebcc1c467832e8f4c071f54e0",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "USA",
      "decimal_odds": "2.0200",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 10200,
      "executed_at": "2026-10-05T04:34:35.922Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-canada-prediction-team-news-lineups_606221.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "USA 2-1 Canada"
   }
  },
  {
   "record_id": "n-0b8d4be95387130637261c49",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-0b8d4be95387130637261c49",
   "match": "USA v Mexico",
   "match_url": "/football/matches/usa-vs-mexico-2026-10-04/",
   "kickoff": "2026-10-04T02:00:00.000Z",
   "competition": "International Soccer",
   "lead_hours": 52.0,
   "market_code": "correct_score_market",
   "author_said": "Correct score: USA 1-1 Mexico",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "3-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-01T21:39:05.000Z",
   "recorded_at": "2026-10-01T22:02:35.258Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": {
    "outcome": "1",
    "price": "2.4450",
    "result": "Won",
    "points_hundredths": 14450,
    "picked_favourite": false
   },
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-0b8d4be95387130637261c49",
    "quote_text": "We say: USA 1-1 Mexico",
    "fragment_from": 4071,
    "fragment_to": 4093,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-mexico-prediction-team-news-lineups_606096.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "0671d299143b9be1713df9da7ac61926c16d82ce00774ec1a0e434aeaca6b839",
     "material_removed": false
    },
    "published_at": "2026-10-01T21:39:05.000Z",
    "detected_at": "2026-10-01T22:02:35.258Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-c48f8dc9b5a1",
     "display_name": "USA — Mexico",
     "competition_name": "International Soccer",
     "starts_at": "2026-10-04T02:00:00.000Z",
     "url": "/football/matches/usa-vs-mexico-2026-10-04/",
     "scoreline": "3-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "USA 1-1 Mexico",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-01T21:39:05.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-01T21:39:05.000Z",
     "detected_at": "2026-10-01T22:02:35.258Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "USA 1-1 Mexico",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-1",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: USA 1-1 Mexico"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "3-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was USA 3-0 Mexico."
    },
    "settlements": [
     {
      "operation_id": "c21757120e957b17b3c9c14ca6d0ba8a746a9117644919f191cc49f6a2e542a4",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "draw",
      "decimal_odds": "3.3850",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-10-04T00:34:48.794Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-mexico-prediction-team-news-lineups_606096.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "USA 1-1 Mexico"
   }
  },
  {
   "record_id": "n-a142071afa82d8606aa98930",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-a142071afa82d8606aa98930",
   "match": "Canada v Peru",
   "match_url": "/football/matches/canada-vs-peru-2026-10-03/",
   "kickoff": "2026-10-03T18:00:00.000Z",
   "competition": "International Soccer",
   "lead_hours": 44.0,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Canada 1-0 Peru",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "2-0",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-01T21:31:53.000Z",
   "recorded_at": "2026-10-01T22:02:35.610Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-a142071afa82d8606aa98930",
    "quote_text": "We say: Canada 1-0 Peru",
    "fragment_from": 3752,
    "fragment_to": 3775,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/canada/international-friendlies-predictions/preview/canada-vs-peru-prediction-team-news-lineups_606095.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "21ce6334e452ac9a252957b0a123ef37f4d35b80f80660cac7cb31377ffe00e5",
     "material_removed": false
    },
    "published_at": "2026-10-01T21:31:53.000Z",
    "detected_at": "2026-10-01T22:02:35.610Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-94b8d22c1cb8",
     "display_name": "Canada — Peru",
     "competition_name": "International Soccer",
     "starts_at": "2026-10-03T18:00:00.000Z",
     "url": "/football/matches/canada-vs-peru-2026-10-03/",
     "scoreline": "2-0",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Canada 1-0 Peru",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-10-01T21:31:53.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-10-01T21:31:53.000Z",
     "detected_at": "2026-10-01T22:02:35.610Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Canada 1-0 Peru",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Canada 1-0 Peru"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "2-0",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Canada 2-0 Peru."
    },
    "settlements": [
     {
      "operation_id": "4056784618878462dee9f8c6f38c6267beb20020199b2e6fe28a9520b94e6678",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Canada",
      "decimal_odds": "1.5780",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 5780,
      "executed_at": "2026-10-01T22:34:17.417Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/canada/international-friendlies-predictions/preview/canada-vs-peru-prediction-team-news-lineups_606095.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Canada 1-0 Peru"
   }
  },
  {
   "record_id": "n-29970273cec5eab6992440dd",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-29970273cec5eab6992440dd",
   "match": "Mexico v Peru",
   "match_url": "/football/matches/mexico-vs-peru-2026-09-30/",
   "kickoff": "2026-09-30T01:00:00.000Z",
   "competition": "International Soccer",
   "lead_hours": 53.9,
   "market_code": "correct_score_market",
   "author_said": "Correct score: Mexico 1-0 Peru",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "1-1",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-27T18:39:39.000Z",
   "recorded_at": "2026-09-27T19:04:36.228Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-29970273cec5eab6992440dd",
    "quote_text": "We say: Team Mexico 1-0 Peru",
    "fragment_from": 3497,
    "fragment_to": 3525,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/mexico/international-friendlies-predictions/news/mexico-vs-peru-prediction-team-news-lineups_605892.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "3f02fdde97a277ffd26df03ecd262c521445b0afff01b0cf9fe743be2b72ac95",
     "material_removed": false
    },
    "published_at": "2026-09-27T18:39:39.000Z",
    "detected_at": "2026-09-27T19:04:36.228Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-f87a3577ee0b",
     "display_name": "Mexico — Peru",
     "competition_name": "International Soccer",
     "starts_at": "2026-09-30T01:00:00.000Z",
     "url": "/football/matches/mexico-vs-peru-2026-09-30/",
     "scoreline": "1-1",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "Mexico 1-0 Peru",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-09-27T18:39:39.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-09-27T18:39:39.000Z",
     "detected_at": "2026-09-27T19:04:36.228Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "Mexico 1-0 Peru",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "1-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: Mexico 1-0 Peru"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "1-1",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was Mexico 1-1 Peru."
    },
    "settlements": [
     {
      "operation_id": "571a0a6e874d099a5d8f53f46a892c3a6507855ccb7e3deb77d9fdb433691a80",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "Mexico",
      "decimal_odds": "1.5000",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "loss",
      "result_words": "Lost",
      "change_hundredths": -10000,
      "executed_at": "2026-09-29T01:07:20.242Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/mexico/international-friendlies-predictions/news/mexico-vs-peru-prediction-team-news-lineups_605892.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "Mexico 1-0 Peru"
   }
  },
  {
   "record_id": "n-b29994b92a3677f16c5ceff9",
   "url": "/authors/joel-lefevre/picks/2/#pick-n-b29994b92a3677f16c5ceff9",
   "match": "USA v Chile",
   "match_url": "/football/matches/usa-vs-chile-2026-09-30/",
   "kickoff": "2026-09-30T00:00:00.000Z",
   "competition": "International Soccer",
   "lead_hours": 52.9,
   "market_code": "correct_score_market",
   "author_said": "Correct score: USA 2-0 Chile",
   "quote": null,
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": "Lost",
   "final_score": "4-2",
   "reason": "score forecast without a price, graded against the final score",
   "reason_code": "score_without_price",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-27T18:34:28.000Z",
   "recorded_at": "2026-09-27T19:04:36.314Z",
   "origin": "Recorded by us before kick-off",
   "record_part": "live",
   "record_part_words": "Recorded before kick-off",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null,
   "evidence": {
    "observation_id": "n-b29994b92a3677f16c5ceff9",
    "quote_text": "We say: USA 2-0 Chile",
    "fragment_from": 3317,
    "fragment_to": 3338,
    "quote_allowed": true,
    "source_info": {
     "medium": "rss",
     "url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-chile-prediction-team-news-lineups_605891.html",
     "display_name": null,
     "speaker": "Joel Lefevre",
     "authorship": "channel_owner",
     "media_from_ms": null,
     "bundle_id": "21ad47607361124fb5e2a0e46f10662bd4ac6a603658a025ba603d03d5c8400a",
     "material_removed": false
    },
    "published_at": "2026-09-27T18:34:28.000Z",
    "detected_at": "2026-09-27T19:04:36.314Z",
    "executed_at": null,
    "statement_class": "score_forecast",
    "status": "recognised",
    "cause": null,
    "cause_code": null,
    "event": {
     "event_id": "s-c4758ee87917",
     "display_name": "USA — Chile",
     "competition_name": "International Soccer",
     "starts_at": "2026-09-30T00:00:00.000Z",
     "url": "/football/matches/usa-vs-chile-2026-09-30/",
     "scoreline": "4-2",
     "condition": "finished"
    },
    "market_label": "Correct score",
    "outcome_label": "USA 2-0 Chile",
    "odds_set": {
     "by_author": null,
     "our_snapshot": null,
     "our_snapshot_at": null,
     "our_snapshot_source": null,
     "closing": null,
     "closing_source": null
    },
    "stake_hundredths": null,
    "result": "loss",
    "simulation_change_hundredths": null,
    "bankroll_after_hundredths": null,
    "executed_by": null,
    "series_label": null,
    "withdrawn": false,
    "provenance": "recorded_pre_match",
    "provenance_words": "Recorded by us before kick-off",
    "dates": {
     "fragment_at": "2026-09-27T18:34:28.000Z",
     "fragment_basis": "element",
     "source_page_at": "2026-09-27T18:34:28.000Z",
     "detected_at": "2026-09-27T19:04:36.314Z",
     "archive_snapshot_at": null,
     "flags": [],
     "flag_words": null,
     "rule_version": "1.1"
    },
    "origin": "recorded_before_kickoff",
    "origin_detail": null,
    "origin_words": "Recorded by us before kick-off",
    "added_on": null,
    "late_publication": null,
    "author_claim": {
     "market_label": "Correct score",
     "choice": "USA 2-0 Chile",
     "author_odds": null,
     "market_key": "correct_score_market",
     "choice_key": "2-0",
     "period": "match",
     "line": null,
     "subject": "goals_total",
     "in_words": "Correct score: USA 2-0 Chile"
    },
    "author_claim_outcome": {
     "result": "loss",
     "scoreline": "4-2",
     "data_status": "measured",
     "cause": null,
     "methodology_version": "2.2",
     "in_words": "Did not match: the final score was USA 4-2 Chile."
    },
    "settlements": [
     {
      "operation_id": "0834bcdabc45c105a8ba434dfcba5a1416bc79c6bcb7823d195739d31b14e30a",
      "series_key": "derived_series",
      "series_label": "Forecast Record reconstruction from the predicted score",
      "derived": true,
      "site_simulation": true,
      "author_words": false,
      "market_label": "1X2, match result",
      "choice": "USA",
      "decimal_odds": "1.4292",
      "odds_role": "market_price",
      "stake_hundredths": 10000,
      "status": "confirmed",
      "status_text": "Executed",
      "result": "win",
      "result_words": "Won",
      "change_hundredths": 4292,
      "executed_at": "2026-09-29T02:27:21.497Z",
      "methodology_version": "2.2",
      "on_claim_market": false,
      "replaced": false
     }
    ],
    "corrections": [],
    "funnel_stage": "prediction",
    "authorship": {
     "material_author": "Joel Lefevre",
     "publisher": "Sports Mole",
     "forecaster": "Joel Lefevre",
     "forecaster_named_in_text": false,
     "basis": null,
     "status": "not_named",
     "status_words": "Attributed by the byline",
     "status_note": "The source does not name a separate tipster, so the selection is attributed to the byline or channel owner.",
     "evidence_fragment": null,
     "material_url": "https://www.sportsmole.co.uk/football/usa/international-friendlies-predictions/preview/usa-vs-chile-prediction-team-news-lineups_605891.html",
     "excluded_from_individual_summaries": false,
     "verdict_by": null,
     "verdict_line": null
    },
    "correction": null,
    "choice_words": "USA 2-0 Chile"
   }
  },
  {
   "record_id": "n-bb3bb7deec67b8f7f1abd143",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Rybakina to win in two sets",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-07T00:13:00.000Z",
   "recorded_at": "2026-11-07T01:10:28.537Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-7dc8c24b481838795c8db543",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Gauff to win in three sets",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-07T00:07:35.000Z",
   "recorded_at": "2026-11-07T02:10:14.225Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-36863c674f462b4cdf532dd1",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Le Mans 1-2 Monaco",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "ambiguous",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-06T00:47:10.000Z",
   "recorded_at": "2026-11-06T01:10:21.817Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-91d18de68a86727cb55451a8",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Angers 0-2 Nice",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "ambiguous",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-11-06T00:05:39.000Z",
   "recorded_at": "2026-11-06T02:10:04.453Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-f95cccd9e8c27cf36e8d834c",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Troyes 2-1 Le Mans",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-28T22:50:00.000Z",
   "recorded_at": "2026-10-28T23:10:19.193Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-81eddfa95fd817b614f0d388",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Los Angeles FC 2-2 Los Angeles Galaxy",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-23T00:02:00.000Z",
   "recorded_at": "2026-10-23T01:10:08.048Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-c69e859c2382d0e175d7178d",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Toulouse 3-1 Troyes",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-21T22:34:00.000Z",
   "recorded_at": "2026-10-21T23:10:29.638Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-378f39042c9bcc1c7eda7c0e",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Troyes 1-2 Lens",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-14T21:14:48.000Z",
   "recorded_at": "2026-10-14T22:09:50.846Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-8ecb1ad5b72df5db0d61c24b",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Le Mans 2-2 Toulouse",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-13T23:28:46.000Z",
   "recorded_at": "2026-10-14T00:09:50.343Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-81f68ef21692b52c58c4bc31",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Troyes 0-3 Marseille",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "",
   "reason_code": "not_supported",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-09T01:05:18.000Z",
   "recorded_at": "2026-10-09T02:05:08.193Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-5b3d24216a52b6a1efd1cbcc",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Guatemala 2-1 Suriname",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-03T19:41:25.000Z",
   "recorded_at": "2026-10-03T20:03:25.070Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-9eb75008ee94e7f19cd83de4",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Martinique 0-0 El Salvador",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-03T19:36:08.000Z",
   "recorded_at": "2026-10-03T20:03:26.280Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-55c2989f374ace02e30b8d32",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Honduras 1-2 Jamaica",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-03T18:05:26.000Z",
   "recorded_at": "2026-10-03T19:03:11.754Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-b0574473aa6ab4c298e4d858",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Costa Rica 1-2 Haiti",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-02T19:52:25.000Z",
   "recorded_at": "2026-10-02T20:03:48.609Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-a77be795cc744bae54341278",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Nicaragua 1-2 Dominican Republic",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-02T19:49:05.000Z",
   "recorded_at": "2026-10-02T20:03:49.123Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-ef2337ba49be993b6f7e7187",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Trinidad and Tobago 1-1 Curacao",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-10-02T01:45:04.000Z",
   "recorded_at": "2026-10-02T02:03:46.552Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-301d93aeba8b253afc1a9c78",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: El Salvador 0-1 Jamaica",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-29T22:15:19.000Z",
   "recorded_at": "2026-09-29T23:07:03.277Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-bdecbf5e6f47aeda6a40636f",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Nicaragua 1-4 Costa Rica",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-29T01:27:14.000Z",
   "recorded_at": "2026-09-29T02:07:29.899Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-66a3e9f1fbcc13970c4d15fb",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Curacao 3-1 Trinidad and Tobago",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-29T01:20:55.000Z",
   "recorded_at": "2026-09-29T02:07:30.061Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  },
  {
   "record_id": "n-3effa33620d2e814d238001e",
   "url": null,
   "match": null,
   "match_url": null,
   "kickoff": null,
   "competition": null,
   "lead_hours": null,
   "market_code": null,
   "author_said": null,
   "quote": "We say: Belize 1-1 Saint Vincent & the Grenadines",
   "group": "excluded",
   "outcome": "Excluded",
   "claim_outcome": null,
   "final_score": null,
   "reason": "national-team match (Nations League, qualifiers, continental cups)",
   "reason_code": "outside_coverage",
   "points_hundredths": null,
   "series_code": null,
   "series_short": null,
   "author_price": null,
   "settled_price": null,
   "published_at": "2026-09-28T14:32:00.000Z",
   "recorded_at": "2026-09-28T15:02:01.108Z",
   "origin": "Date as stated by the source; no match is linked to this statement",
   "record_part": "unlinked",
   "record_part_words": "Without a match page",
   "in_headline": false,
   "attribution": null,
   "verdict_line": null,
   "price_disputed": null,
   "checked_after_kickoff": false,
   "favourite": null,
   "platform": null,
   "correction": null
  }
 ],
 "lead_time": {
  "contract_version": 1,
  "threshold_hours": 2.0,
  "picks": 43,
  "before_kickoff": 43,
  "after_kickoff": 0,
  "at_least_2h": 42,
  "share_2h_plus": 97.7,
  "median_hours": 65.6,
  "min_hours": 1.8,
  "max_hours": 116.6,
  "words": "Hours between the moment we recorded the pick and kick-off; the share counts picks recorded at least two hours before kick-off."
 },
 "baseline": {
  "contract_version": 1,
  "series_code": "market_price",
  "rule": "recorded-line-1.0",
  "state": "settled",
  "picks": 29,
  "settled_picks_all": 37,
  "excluded": {
   "market_without_favourite": 1,
   "no_recorded_line": 7,
   "favourite_not_settled": 0
  },
  "staked_hundredths": 290000,
  "author_net_hundredths": -11812,
  "favourite_net_hundredths": 54762,
  "difference_hundredths": -66574,
  "author_return_percent": -4.07,
  "favourite_return_percent": 18.88,
  "author_hit_rate": 51.7,
  "favourite_hit_rate": 65.5,
  "picked_favourite_share": 62.1,
  "by_market": [
   {
    "market_code": "1x2",
    "picks": 29,
    "staked_hundredths": 290000,
    "author_net_hundredths": -11812,
    "favourite_net_hundredths": 54762,
    "author_hits": 15,
    "favourite_hits": 19,
    "picked_favourite": 18,
    "author_return_percent": -4.07,
    "favourite_return_percent": 18.88
   }
  ],
  "return_over_time": [
   {
    "kickoff": "2026-10-04T02:00:00.000Z",
    "author_cumulative_hundredths": -10000,
    "favourite_cumulative_hundredths": 14450
   },
   {
    "kickoff": "2026-10-07T00:00:00.000Z",
    "author_cumulative_hundredths": 200,
    "favourite_cumulative_hundredths": 24650
   },
   {
    "kickoff": "2026-10-10T18:45:00.000Z",
    "author_cumulative_hundredths": -9800,
    "favourite_cumulative_hundredths": 34174
   },
   {
    "kickoff": "2026-10-10T18:45:00.000Z",
    "author_cumulative_hundredths": -19800,
    "favourite_cumulative_hundredths": 24174
   },
   {
    "kickoff": "2026-10-10T23:30:00.000Z",
    "author_cumulative_hundredths": -16164,
    "favourite_cumulative_hundredths": 27810
   },
   {
    "kickoff": "2026-10-11T13:00:00.000Z",
    "author_cumulative_hundredths": -26164,
    "favourite_cumulative_hundredths": 40810
   },
   {
    "kickoff": "2026-10-11T15:15:00.000Z",
    "author_cumulative_hundredths": -21962,
    "favourite_cumulative_hundredths": 45012
   },
   {
    "kickoff": "2026-10-17T15:15:00.000Z",
    "author_cumulative_hundredths": -17962,
    "favourite_cumulative_hundredths": 49012
   },
   {
    "kickoff": "2026-10-17T18:45:00.000Z",
    "author_cumulative_hundredths": -27962,
    "favourite_cumulative_hundredths": 39012
   },
   {
    "kickoff": "2026-10-17T23:30:00.000Z",
    "author_cumulative_hundredths": -19629,
    "favourite_cumulative_hundredths": 47345
   },
   {
    "kickoff": "2026-10-18T15:15:00.000Z",
    "author_cumulative_hundredths": -29629,
    "favourite_cumulative_hundredths": 59845
   },
   {
    "kickoff": "2026-10-18T15:15:00.000Z",
    "author_cumulative_hundredths": -39629,
    "favourite_cumulative_hundredths": 49845
   },
   {
    "kickoff": "2026-10-18T18:45:00.000Z",
    "author_cumulative_hundredths": -33050,
    "favourite_cumulative_hundredths": 56424
   },
   {
    "kickoff": "2026-10-22T16:45:00.000Z",
    "author_cumulative_hundredths": -43050,
    "favourite_cumulative_hundredths": 46424
   },
   {
    "kickoff": "2026-10-23T18:45:00.000Z",
    "author_cumulative_hundredths": -22050,
    "favourite_cumulative_hundredths": 36424
   },
   {
    "kickoff": "2026-10-24T18:45:00.000Z",
    "author_cumulative_hundredths": -32050,
    "favourite_cumulative_hundredths": 51424
   },
   {
    "kickoff": "2026-10-24T21:30:00.000Z",
    "author_cumulative_hundredths": -42050,
    "favourite_cumulative_hundredths": 41424
   },
   {
    "kickoff": "2026-10-25T14:00:00.000Z",
    "author_cumulative_hundredths": -17650,
    "favourite_cumulative_hundredths": 31424
   },
   {
    "kickoff": "2026-10-25T16:15:00.000Z",
    "author_cumulative_hundredths": -27650,
    "favourite_cumulative_hundredths": 38924
   },
   {
    "kickoff": "2026-10-26T19:30:00.000Z",
    "author_cumulative_hundredths": -23200,
    "favourite_cumulative_hundredths": 43374
   },
   {
    "kickoff": "2026-10-30T18:00:00.000Z",
    "author_cumulative_hundredths": -20700,
    "favourite_cumulative_hundredths": 45874
   },
   {
    "kickoff": "2026-10-30T18:00:00.000Z",
    "author_cumulative_hundredths": -30700,
    "favourite_cumulative_hundredths": 35874
   },
   {
    "kickoff": "2026-10-30T20:05:00.000Z",
    "author_cumulative_hundredths": -16700,
    "favourite_cumulative_hundredths": 49874
   },
   {
    "kickoff": "2026-11-01T16:15:00.000Z",
    "author_cumulative_hundredths": -12700,
    "favourite_cumulative_hundredths": 53874
   },
   {
    "kickoff": "2026-11-02T19:45:00.000Z",
    "author_cumulative_hundredths": -22700,
    "favourite_cumulative_hundredths": 43874
   },
   {
    "kickoff": "2026-11-03T20:00:00.000Z",
    "author_cumulative_hundredths": -16712,
    "favourite_cumulative_hundredths": 49862
   },
   {
    "kickoff": "2026-11-04T15:30:00.000Z",
    "author_cumulative_hundredths": -26712,
    "favourite_cumulative_hundredths": 39862
   },
   {
    "kickoff": "2026-11-05T20:00:00.000Z",
    "author_cumulative_hundredths": -22312,
    "favourite_cumulative_hundredths": 44262
   },
   {
    "kickoff": "2026-11-06T19:45:00.000Z",
    "author_cumulative_hundredths": -11812,
    "favourite_cumulative_hundredths": 54762
   }
  ],
  "words": "Same stakes, same matches, same recorded moment: the author’s picks against backing the market favourite by the recorded line. Only markets with a single shortest price count (match result, over/under, both teams to score, handicap); correct score and combined markets are left out."
 },
 "pagination": {
  "per_page": 20,
  "total": 63,
  "pages": 5,
  "page_urls": [
   "/authors/joel-lefevre/",
   "/authors/joel-lefevre/picks/2/",
   "/authors/joel-lefevre/picks/3/",
   "/authors/joel-lefevre/picks/4/",
   "/authors/joel-lefevre/picks/5/"
  ],
  "groups": {
   "settled": 1,
   "pending": 0,
   "excluded": 62
  },
  "continuation": "by_time",
  "page": 1,
  "first": 1,
  "last": 20,
  "author_url": "/authors/joel-lefevre/",
  "current": false
 },
 "title_tag": "Joel Lefevre Predictions: Verified Record, Results and Sources",
 "calculator": null,
 "person": {
  "person_id": "o-aef77d241797d8716c6a7ee2",
  "type_code": "individual",
  "name_shown": "Joel Lefevre",
  "main_entity": "e-aef77d241797d8716c6a7ee2",
  "identity": {
   "status": "not_verified",
   "is_verified": false,
   "when": null,
   "source_list": []
  },
  "platform_list": [
   {
    "entity_ref": "e-aef77d241797d8716c6a7ee2",
    "medium": "Sports Mole",
    "channel": "RSS feed",
    "domain": "sportsmole.co.uk",
    "source_info": "sports-mole",
    "byline": "Joel Lefevre",
    "url": "/sources/sports-mole/",
    "summary": {
     "statements": 242,
     "predictions": 62,
     "settled_picks": 1,
     "headline_kind": "live_snapshot",
     "return_percent": -100.0,
     "headline_part": "live",
     "period_from": "2026-09-27",
     "period_to": "2026-11-07"
    }
   },
   {
    "entity_ref": "e-1368cc8c6f2d61b1b2042927",
    "medium": "Sports Mole",
    "channel": "RSS feed",
    "domain": "sportsmole.co.uk",
    "source_info": "sports-mole",
    "byline": "Joel Lefevre",
    "url": null,
    "summary": {
     "statements": 33,
     "predictions": 4,
     "settled_picks": 0,
     "headline_kind": null,
     "return_percent": null,
     "headline_part": null,
     "period_from": "2026-10-03",
     "period_to": "2026-11-01"
    }
   }
  ],
  "previously": [],
  "trust_tier": "tracked"
 },
 "data_revision": {
  "data_version": "2026-11-01.3",
  "updated": "2026-11-01",
  "current_release": "2026-11-07.2",
  "data_as_of": "2026-11-07",
  "method_version": "2.2",
  "price_rule": "independent odds snapshot",
  "series_code": "market_price",
  "sample": {
   "settled_picks": 1,
   "matches": 1,
   "void": 0,
   "period_from": "2026-11-01",
   "period_to": "2026-11-01",
   "composition_hash": "e40b571ed2802c86a2b77848a065248d78d0acaf7e89df330d3ab7c4c41ccc20"
  },
  "changes_url": "#changes",
  "corrections_url": "/corrections/"
 },
 "number_changes": [
  {
   "id": "zc-bbcf4866db93b1061c3a",
   "at": "2026-11-01T19:56:40.745Z",
   "data_version": "2026-11-01.3",
   "previous_data_version": "2026-11-01.2",
   "url": "/authors/joel-lefevre/",
   "category": "coverage_extended",
   "category_words": "Coverage extended",
   "before": null,
   "after": {
    "data_version": "2026-11-01.3",
    "return_percent": "-100.00",
    "settled_picks": 1,
    "matches": 1,
    "void": 0,
    "series_code": "market_price",
    "price_rule": "independent odds snapshot",
    "method_version": "2.2",
    "composition_hash": "e40b571ed2802c86a2b77848a065248d78d0acaf7e89df330d3ab7c4c41ccc20",
    "text": "−100.00 points on 1 settled pick across 1 match · independent odds snapshot · method 2.2"
   },
   "reason": "First headline number for this record: 1 settled pick in the series “independent odds snapshot”.",
   "checked_by": "comparison of data versions",
   "affected_records": {
    "added": 1,
    "removed": 0,
    "changed": 0
   },
   "correction_id": null
  }
 ],
 "counts_by_slice": {
  "portions": [
   {
    "code": "live",
    "title": "Recorded before kick-off",
    "price_rule": "Return at our recorded market price",
    "settled_picks": 1,
    "total_check": true,
    "market_list": [
     {
      "code_name": "correct_score_market",
      "in_words": "Correct score",
      "url": null,
      "settled_picks": 1,
      "won": 0,
      "void": 0,
      "net_points_hundredths": -10000,
      "return_percent": "-100.0",
      "period_from": "2026-11-01",
      "period_to": "2026-11-01",
      "small_sample": true,
      "average_odds": "10.00",
      "odds_from_author": 0,
      "odds_from_snapshot": 1
     }
    ],
    "leagues": [
     {
      "code_name": "Ligue 1",
      "in_words": "Ligue 1",
      "url": "/football/competitions/ligue-1/",
      "settled_picks": 1,
      "won": 0,
      "void": 0,
      "net_points_hundredths": -10000,
      "return_percent": "-100.0",
      "period_from": "2026-11-01",
      "period_to": "2026-11-01",
      "small_sample": true,
      "average_odds": "10.00",
      "odds_from_author": 0,
      "odds_from_snapshot": 1,
      "league_markets": [
       {
        "code_name": "correct_score_market",
        "in_words": "Correct score",
        "settled_picks": 1,
        "won": 0,
        "void": 0,
        "net_points_hundredths": -10000,
        "return_percent": null,
        "period_from": "2026-11-01",
        "period_to": "2026-11-01",
        "small_sample": true,
        "average_odds": "10.00",
        "odds_from_author": 0,
        "odds_from_snapshot": 1
       }
      ]
     }
    ],
    "best_slice": null
   }
  ],
  "best_slice": null
 },
 "author_card": {
  "body": "Record tracked by Forecast Record since 27 September 2026 · 63 predictions · last change 7 November 2026",
  "url": "https://forecastrecord.com/authors/joel-lefevre/",
  "s": "2026-09-27",
  "prediction_count": 63,
  "refreshed_at": "2026-11-07",
  "html": "<a href=\"https://forecastrecord.com/authors/joel-lefevre/\">Record tracked by Forecast Record since 27 September 2026 · 63 predictions · last change 7 November 2026</a>"
 },
 "trust": {
  "tier": "tracked",
  "in_words": "Tracked",
  "settled_count": 37,
  "days": 38,
  "weeks": 6,
  "archive": false,
  "in_review": false,
  "own_page": true,
  "won_count": 5,
  "first_settled_on": "2026-09-30",
  "products_in_level": 1,
  "rule": {
   "tracked": {
    "min_settled": 30,
    "min_days": 30,
    "min_distinct_weeks": 2,
    "no_violations": true
   },
   "established": {
    "min_settled": 100,
    "min_days": 90
   }
  },
  "show": true
 },
 "colleagues": [
  {
   "source_code": "sports-mole",
   "source_name": "Sports Mole",
   "source_url": "/sources/sports-mole/",
   "label": "Also at Sports Mole",
   "authors_total": 24,
   "authors": [
    {
     "name": "Saikat Mandal",
     "url": "/authors/saikat-mandal/",
     "headline_part": "live",
     "settled_picks": 57,
     "return_percent": "32.5",
     "small_sample": false,
     "average_odds": "2.21",
     "odds_from_author": 56,
     "odds_from_snapshot": 1
    },
    {
     "name": "Lewis Nolan",
     "url": "/authors/lewis-nolan/",
     "headline_part": "live",
     "settled_picks": 47,
     "return_percent": "-55.1",
     "small_sample": false,
     "average_odds": "2.22",
     "odds_from_author": 47,
     "odds_from_snapshot": 0
    },
    {
     "name": "Adeyeye Oluwapelumi",
     "url": "/authors/adeyeye-oluwapelumi/",
     "headline_part": "live",
     "settled_picks": 33,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Joshua Cole",
     "url": "/authors/joshua-cole/",
     "headline_part": "live",
     "settled_picks": 32,
     "return_percent": "-40.1",
     "small_sample": false,
     "average_odds": "2.26",
     "odds_from_author": 32,
     "odds_from_snapshot": 0
    },
    {
     "name": "Marvellous Adepoju",
     "url": "/authors/marvellous-adepoju/",
     "headline_part": "live",
     "settled_picks": 25,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Byron David",
     "url": "/authors/byron-david/",
     "headline_part": "live",
     "settled_picks": 24,
     "return_percent": "19.7",
     "small_sample": false,
     "average_odds": "2.09",
     "odds_from_author": 24,
     "odds_from_snapshot": 0
    },
    {
     "name": "Joshua Ojele",
     "url": "/authors/joshua-ojele/",
     "headline_part": "live",
     "settled_picks": 18,
     "return_percent": "-14.8",
     "small_sample": false,
     "average_odds": "1.69",
     "odds_from_author": 16,
     "odds_from_snapshot": 2
    },
    {
     "name": "Calum Burrowes",
     "url": "/authors/calum-burrowes/",
     "headline_part": "live",
     "settled_picks": 15,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Matt Law",
     "url": "/authors/matt-law/",
     "headline_part": "live",
     "settled_picks": 13,
     "return_percent": "-76.7",
     "small_sample": false,
     "average_odds": "7.90",
     "odds_from_author": 0,
     "odds_from_snapshot": 13
    },
    {
     "name": "Sam Varley",
     "url": "/authors/sam-varley/",
     "headline_part": "live",
     "settled_picks": 11,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    },
    {
     "name": "Darren Plant",
     "url": "/authors/darren-plant/",
     "headline_part": "live",
     "settled_picks": 6,
     "return_percent": null,
     "small_sample": true,
     "average_odds": "5.46",
     "odds_from_author": 0,
     "odds_from_snapshot": 6
    },
    {
     "name": "Oliver Thomas",
     "url": "/authors/oliver-thomas/",
     "headline_part": "live",
     "settled_picks": 6,
     "return_percent": null,
     "small_sample": true,
     "average_odds": null,
     "odds_from_author": null,
     "odds_from_snapshot": null
    }
   ]
  }
 ],
 "author_type": "Pundit",
 "data_changes": {
  "added_later": null,
  "records_corrected": 0,
  "last_correction_at": null,
  "corrections_url": "/corrections/"
 },
 "entity_id": "person:o-aef77d241797d8716c6a7ee2",
 "source_revision": 131,
 "related": [
  {
   "url": "/cards/e-aef77d241797d8716c6a7ee2-bank/",
   "name": "Bankroll card — Joel Lefevre",
   "detail": null,
   "source_group": "cards"
  },
  {
   "url": "/cards/e-aef77d241797d8716c6a7ee2-month-following/",
   "name": "A month following Joel Lefevre",
   "detail": null,
   "source_group": "cards"
  },
  {
   "url": "/cards/e-aef77d241797d8716c6a7ee2-said-vs-happened/",
   "name": "Said → happened — Joel Lefevre",
   "detail": null,
   "source_group": "cards"
  },
  {
   "url": "/for-authors/joel-lefevre/",
   "name": "Your titles on Forecast Record: Joel Lefevre",
   "detail": null,
   "source_group": "for_authors"
  }
 ],
 "number_sets": [
  {
   "set": "profile.settled",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 1,
   "where": "coverage",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.predictions",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 63,
   "where": "coverage",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.predictions",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 63,
   "where": "picks",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.live",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 1,
   "where": "origin",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.archived",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.part.found_after",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.checked.archived",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.checked.live",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 37,
   "where": "origin",
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "profile.window",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 1,
   "where": "calculation",
   "as_of": "2026-11-07T19:52:23.438Z",
   "label": true
  },
  {
   "set": "profile.checked",
   "entity": "e-aef77d241797d8716c6a7ee2",
   "value": 37,
   "where": "trust-level",
   "as_of": "2026-11-07T19:52:23.438Z",
   "label": true
  }
 ]
}
