{
 "schema_name": "page",
 "schema_version": "2.0",
 "page_type": "event",
 "url": "/football/matches/le-havre-vs-lorient-2026-11-08/",
 "canonical": "/football/matches/le-havre-vs-lorient-2026-11-08/",
 "language": "en",
 "hreflang": [],
 "translations": [],
 "heading": "Le Havre vs Lorient prediction: tipster picks compared",
 "description": "Le Havre vs Lorient, 8 November 2026: 7 tipsters and sources with 10 or more predictions checked against the final score picked this match — who tipped what.",
 "first_paragraph": {
  "body": "Forecast Record recorded 10 statements from 7 authors on Le Havre vs Lorient (Ligue 1, kick-off 8 November 2026): 10 distinct predictions, all of the statements recorded before kick-off; the selections are listed below by market.",
  "key_number": "10",
  "data": "2026-11-08",
  "source_info": "our own evidence archive",
  "brand": "Forecast Record"
 },
 "indexable": true,
 "noindex_reason": null,
 "indexing_threshold": {
  "settled_count": 10,
  "date_count": 1,
  "required_settled": 0,
  "required_dates": 0
 },
 "data_date": "2026-11-07T18:19:40.927Z",
 "built_at": "2026-11-07T19:52:23.438Z",
 "lastmod": "2026-11-08T02:12:33.000Z",
 "content_hash": null,
 "meaning_hash": "95d5c4ef91a6705c13f51029286e93c9795dd51548e3a50f9938cb31d3f3d693",
 "dependency_group": "event:s-148050af9e63",
 "release_id": "20261107-195223",
 "markup": [
  {
   "type_code": "WebPage",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "Organization",
   "allowed": true,
   "cause": null
  },
  {
   "type_code": "SportsEvent",
   "allowed": true,
   "cause": null
  }
 ],
 "exports": [
  {
   "type_code": "json",
   "url": "/football/matches/le-havre-vs-lorient-2026-11-08/index.json",
   "bytes": null
  },
  {
   "type_code": "csv",
   "url": "/football/matches/le-havre-vs-lorient-2026-11-08/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": "event"
 },
 "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/"
 },
 "event": {
  "id": "s-148050af9e63",
  "display_name": "Le Havre — Lorient",
  "competition_name": "Ligue 1",
  "starts_at": "2026-11-08T16:15:00.000Z",
  "status": "scheduled",
  "scoreline": null,
  "condition": "scheduled",
  "condition_words": "scheduled",
  "result_received_at": null,
  "postponement": null,
  "consensus": {
   "market_label": "1X2, match result",
   "distribution": [
    {
     "outcome_label": "Lorient",
     "figure": 2,
     "share": "66.7"
    },
    {
     "outcome_label": "Le Havre",
     "figure": 1,
     "share": "33.3"
    }
   ],
   "n": 3,
   "author_count": 3,
   "median_odds": "2.88",
   "summary": "Most common recorded selection in this market: Lorient — 2 of 3 eligible picks (one per author), median stated price 2.88",
   "late_excluded": 0,
   "contributions": 3,
   "prediction_count": 3,
   "chain": {
    "publications": 10,
    "unique": 10,
    "comparable": 10,
    "admissible": 10,
    "contributions": 10
   },
   "differing_choices": 0,
   "different_products": 0,
   "counting_rule": "1"
  },
  "country_name": "France",
  "competition_full": "Ligue 1 (France)"
 },
 "evidence_items": [
  {
   "observation_id": "n-e93fc5c833344cb5330ca953",
   "url": "/sources/footballpredictions-com/picks/397/#pick-n-e93fc5c833344cb5330ca953",
   "quote_text": "we are tempted to place our bets on Lorient to Win",
   "fragment_from": 1694,
   "fragment_to": 1744,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://footballpredictions.com/footballpredictions/ligue1predictions/le-havre-vs-lorient-prediction-08-11-2026/",
    "display_name": null,
    "speaker": null,
    "authorship": "channel_consensus",
    "media_from_ms": null,
    "bundle_id": "79aa49e66e8a454cd06bac27ea52177aeda907d64ca10955df02bd0fc98c2538",
    "material_removed": false
   },
   "published_at": "2026-11-02T15:43:04.000Z",
   "detected_at": "2026-11-05T02:19:32.037Z",
   "executed_at": null,
   "statement_class": "unpriced",
   "status": "recognised",
   "cause": "",
   "cause_code": "insufficient_funds",
   "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": "1X2, match result",
   "outcome_label": "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-02T15:43:04.000Z",
    "fragment_basis": "page",
    "source_page_at": "2026-11-02T15:43:04.000Z",
    "detected_at": "2026-11-05T02:19:32.037Z",
    "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": "1X2, match result",
    "choice": "Lorient",
    "author_odds": null,
    "market_key": "1x2",
    "choice_key": "2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "1X2, match result: 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": "a9f9f9fd9acdde7f6860cafc0f328221969231d00345e88dd24c47915a7d324b",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "1X2, match result",
     "choice": "Lorient",
     "decimal_odds": null,
     "odds_role": null,
     "stake_hundredths": null,
     "status": "skipped",
     "status_text": "Not executed: ",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": null,
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "prediction",
   "authorship": {
    "material_author": "FootballPredictions.com",
    "publisher": "FootballPredictions.com",
    "forecaster": "FootballPredictions.com",
    "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://footballpredictions.com/footballpredictions/ligue1predictions/le-havre-vs-lorient-prediction-08-11-2026/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-90d60edf369e3402cfc9892d",
   "url": "/authors/ivan/picks/4/#pick-n-90d60edf369e3402cfc9892d",
   "quote_text": "Naš tip: pobjeda Lorienta.",
   "fragment_from": 9000,
   "fragment_to": 9026,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.svijetkladjenja.com/najave-utakmica/le-havre-lorient-prognoza-ligue-1/",
    "display_name": null,
    "speaker": "Ivan",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "050ac009e2de5b45c95c5715519bd743a77fc3e1ee8229641bdbe5a943d7902a",
    "material_removed": false
   },
   "published_at": "2026-11-05T07:36:37.000Z",
   "detected_at": "2026-11-05T07:39:33.082Z",
   "executed_at": "2026-11-07T09:20:37.790Z",
   "statement_class": "unpriced",
   "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": "1X2, match result",
   "outcome_label": "Lorient",
   "odds_set": {
    "by_author": null,
    "our_snapshot": "2.5000",
    "our_snapshot_at": "2026-11-05T07:35:42.408Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-05T07:36:37.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-05T07:36:37.000Z",
    "detected_at": "2026-11-05T07:39:33.082Z",
    "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": "1X2, match result",
    "choice": "Lorient",
    "author_odds": null,
    "market_key": "1x2",
    "choice_key": "2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "1X2, match result: 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": "1b5357ea406c923fad4a707d76f87bac13ab5dfdab9123b8ad11562eb21ba89d",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "1X2, match result",
     "choice": "Lorient",
     "decimal_odds": "2.5000",
     "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:20:37.790Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Ivan",
    "publisher": "Svijet Klađenja",
    "forecaster": "Ivan",
    "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.svijetkladjenja.com/najave-utakmica/le-havre-lorient-prognoza-ligue-1/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-2ac557060e3b57025ddecab8",
   "url": "/authors/ivan/picks/4/#pick-n-2ac557060e3b57025ddecab8",
   "quote_text": "Alternativa: Lorient ne gubi (X2).",
   "fragment_from": 9027,
   "fragment_to": 9061,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://www.svijetkladjenja.com/najave-utakmica/le-havre-lorient-prognoza-ligue-1/",
    "display_name": null,
    "speaker": "Ivan",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "050ac009e2de5b45c95c5715519bd743a77fc3e1ee8229641bdbe5a943d7902a",
    "material_removed": false
   },
   "published_at": "2026-11-05T07:36:37.000Z",
   "detected_at": "2026-11-05T07:39:33.082Z",
   "executed_at": "2026-11-05T07:40:56.101Z",
   "statement_class": "unpriced",
   "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": "Double chance",
   "outcome_label": "draw or Lorient",
   "odds_set": {
    "by_author": null,
    "our_snapshot": "1.4304",
    "our_snapshot_at": "2026-11-05T07:35:42.408Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-05T07:36:37.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-05T07:36:37.000Z",
    "detected_at": "2026-11-05T07:39:33.082Z",
    "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": "Double chance",
    "choice": "draw or Lorient",
    "author_odds": null,
    "market_key": "double_chance",
    "choice_key": "X2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Double chance: draw or 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": "863de2596f49c157b2accaa187c2b35903712d5a7c63ce8613a0bef1bc92e189",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Double chance",
     "choice": "draw or Lorient",
     "decimal_odds": "1.4304",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-05T07:40:56.101Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Ivan",
    "publisher": "Svijet Klađenja",
    "forecaster": "Ivan",
    "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.svijetkladjenja.com/najave-utakmica/le-havre-lorient-prognoza-ligue-1/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-b0a8bd49500704ef143bc3aa",
   "url": "/authors/james-milton/picks/37/#pick-n-b0a8bd49500704ef143bc3aa",
   "quote_text": "Le Havre to beat Lorient\nLigue1+, 4.15pm Sunday\n2pts 15-8 Betfair, Coral",
   "fragment_from": 1660,
   "fragment_to": 1732,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://www.racingpost.com/sport/football-tips/weekend-football-predictions-free-betting-accumulator-tips-from-james-milton-am8GL3O4EbHP/",
    "display_name": null,
    "speaker": "James Milton",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "1e2d7075576d9b1735ee3e3121ca5b323488ea0fe447aae42197f24229ec3390",
    "material_removed": false
   },
   "published_at": "2026-11-05T16:00:00.000Z",
   "detected_at": "2026-11-05T16:18:29.001Z",
   "executed_at": "2026-11-05T16:21:08.870Z",
   "statement_class": "priced",
   "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": "1X2, match result",
   "outcome_label": "Le Havre",
   "odds_set": {
    "by_author": "2.875",
    "our_snapshot": "2.8000",
    "our_snapshot_at": "2026-11-05T16:14:26.818Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-05T16:00:00.000Z",
    "fragment_basis": "page",
    "source_page_at": "2026-11-05T16:00:00.000Z",
    "detected_at": "2026-11-05T16:18:29.001Z",
    "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": "1X2, match result",
    "choice": "Le Havre",
    "author_odds": "2.875",
    "market_key": "1x2",
    "choice_key": "1",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "1X2, match result: Le Havre at 2.88"
   },
   "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": "b28439c018a7d3470d9367d4b214a0357c08aea4b6c993f52b59146602c7ec98",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "1X2, match result",
     "choice": "Le Havre",
     "decimal_odds": "2.875",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-05T16:21:04.900Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "109ef3fec447d728129cd4ee9530830aa99e5307fc604b0e72520de540845a0c",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "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-05T16:21:08.870Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "James Milton",
    "publisher": "racingpost.com",
    "forecaster": "James Milton",
    "forecaster_named_in_text": true,
    "basis": null,
    "status": "matches_source",
    "status_words": "Named in the source as the tipster",
    "status_note": null,
    "evidence_fragment": "James Milton's best bets Aston Villa to beat Manchester United Sky Sports Premier League & Main Event, 4.30pm Sunday 3pts 11-5 bet365, BoyleSports, Coral Birmingham to beat Swansea 3",
    "material_url": "https://www.racingpost.com/sport/football-tips/weekend-football-predictions-free-betting-accumulator-tips-from-james-milton-am8GL3O4EbHP/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": 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-5165944dfa32585331ceee11",
   "url": "/authors/byron-david/picks/6/#pick-n-5165944dfa32585331ceee11",
   "quote_text": "With the hosts struggling to score goals, BTTS – No at 1.95 odds is another possibility",
   "fragment_from": 4809,
   "fragment_to": 4896,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "display_name": null,
    "speaker": "Byron David",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e086bfbb69d3b0c51df7bdef8a4b70af9ff3e8d8ce6f8373c6be23a3b82313bf",
    "material_removed": false
   },
   "published_at": "2026-11-06T12:10:32.000Z",
   "detected_at": "2026-11-06T12:24:17.439Z",
   "executed_at": "2026-11-06T12:25:47.698Z",
   "statement_class": "priced",
   "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": "Both teams to score",
   "outcome_label": "no",
   "odds_set": {
    "by_author": "1.95",
    "our_snapshot": "2.0000",
    "our_snapshot_at": "2026-11-06T12:24:09.391Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-06T12:10:32.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T12:10:32.000Z",
    "detected_at": "2026-11-06T12:24:17.439Z",
    "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": "Both teams to score",
    "choice": "no",
    "author_odds": "1.95",
    "market_key": "both_teams_score",
    "choice_key": "no",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Both teams to score: no at 1.95"
   },
   "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": "f8b8c410aef87249a0578069ec7531707131139d0db267ff12f584c97fe59513",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Both teams to score",
     "choice": "no",
     "decimal_odds": "1.95",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T12:25:41.965Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "9ac42c5e956f0005400ed695e0755b4542a4c53f40a05ca66004b38148518195",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Both teams to score",
     "choice": "no",
     "decimal_odds": "2.0000",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T12:25:47.698Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Byron David",
    "publisher": "Football Whispers",
    "forecaster": "Byron David",
    "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://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-fe1025ec53f756a40c1790e3",
   "url": "/authors/byron-david/picks/6/#pick-n-fe1025ec53f756a40c1790e3",
   "quote_text": "> Double chance – Draw/ Lorient at 1.36 | Likelihood: High",
   "fragment_from": 5032,
   "fragment_to": 5090,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "display_name": null,
    "speaker": "Byron David",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e086bfbb69d3b0c51df7bdef8a4b70af9ff3e8d8ce6f8373c6be23a3b82313bf",
    "material_removed": false
   },
   "published_at": "2026-11-06T12:10:32.000Z",
   "detected_at": "2026-11-06T12:24:17.439Z",
   "executed_at": "2026-11-06T12:25:51.358Z",
   "statement_class": "priced",
   "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": "Double chance",
   "outcome_label": "draw or Lorient",
   "odds_set": {
    "by_author": "1.36",
    "our_snapshot": "1.4200",
    "our_snapshot_at": "2026-11-06T12:24:09.391Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-06T12:10:32.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T12:10:32.000Z",
    "detected_at": "2026-11-06T12:24:17.439Z",
    "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": "Double chance",
    "choice": "draw or Lorient",
    "author_odds": "1.36",
    "market_key": "double_chance",
    "choice_key": "X2",
    "period": "match",
    "line": null,
    "subject": "goals_total",
    "in_words": "Double chance: draw or Lorient at 1.36"
   },
   "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": "0bfcdc4357225eb2d684682835850c85d122e2375eed02d5bb5ffdb38e4a37fb",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Double chance",
     "choice": "draw or Lorient",
     "decimal_odds": "1.36",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T12:25:48.482Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "730820a7f22c3bdcdc00039bfd41a61b0ed96bdb53c9fb517f2952ee94e64910",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Double chance",
     "choice": "draw or Lorient",
     "decimal_odds": "1.4200",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-06T12:25:51.358Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Byron David",
    "publisher": "Football Whispers",
    "forecaster": "Byron David",
    "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://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-1df6cfe18a4f172133e33ad4",
   "url": "/authors/byron-david/picks/6/#pick-n-1df6cfe18a4f172133e33ad4",
   "quote_text": "as is the total goals to be under 2.5 at 1.75 odds.",
   "fragment_from": 4898,
   "fragment_to": 4949,
   "quote_allowed": true,
   "source_info": {
    "medium": "rss",
    "url": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "display_name": null,
    "speaker": "Byron David",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "e086bfbb69d3b0c51df7bdef8a4b70af9ff3e8d8ce6f8373c6be23a3b82313bf",
    "material_removed": false
   },
   "published_at": "2026-11-06T12:10:32.000Z",
   "detected_at": "2026-11-06T12:24:17.439Z",
   "executed_at": "2026-11-07T09:11:28.778Z",
   "statement_class": "priced",
   "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": "Over/Under 2.5 goals",
   "outcome_label": "under 2.5",
   "odds_set": {
    "by_author": "1.75",
    "our_snapshot": "1.8200",
    "our_snapshot_at": "2026-11-06T12:24:09.391Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-06T12:10:32.000Z",
    "fragment_basis": "element",
    "source_page_at": "2026-11-06T12:10:32.000Z",
    "detected_at": "2026-11-06T12:24:17.439Z",
    "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": "Over/Under 2.5 goals",
    "choice": "under 2.5",
    "author_odds": "1.75",
    "market_key": "total",
    "choice_key": "under",
    "period": "match",
    "line": "2.5",
    "subject": "goals_total",
    "in_words": "Over/Under 2.5 goals: under 2.5 at 1.75"
   },
   "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": "0178825ca91513e5b0aab7dad5f5135296bf054e13b9163c785a794bd4b5a430",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Over/Under 2.5 goals",
     "choice": "under 2.5",
     "decimal_odds": "1.75",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T09:11:25.891Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "0a87cc0f157cdff72975375842ccc261694cf7a90a07af67e0b52d21d4fd6b76",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Over/Under 2.5 goals",
     "choice": "under 2.5",
     "decimal_odds": "1.8200",
     "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:11:28.778Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Byron David",
    "publisher": "Football Whispers",
    "forecaster": "Byron David",
    "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://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-4c23cb82ba5d120a4ae257e5",
   "url": "/sources/dailysports-net/picks/34/#pick-n-4c23cb82ba5d120a4ae257e5",
   "quote_text": "Total under 2.5\n\nOdds:\n\n1.83",
   "fragment_from": 4487,
   "fragment_to": 4515,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://dailysports.net/predictions/can-le-havre-finally-end-their-losing-run-against-lorient-prediction-november-8-2026/",
    "display_name": null,
    "speaker": null,
    "authorship": "channel_consensus",
    "media_from_ms": null,
    "bundle_id": "12a513b21dc3d8caca82ef9369fe253050b3a95afffbaac0e31ff1faad693e09",
    "material_removed": false
   },
   "published_at": "2026-11-07T10:13:55.000Z",
   "detected_at": "2026-11-07T10:49:45.947Z",
   "executed_at": "2026-11-07T10:55:05.894Z",
   "statement_class": "priced",
   "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": "Over/Under 2.5 goals",
   "outcome_label": "under 2.5",
   "odds_set": {
    "by_author": "1.83",
    "our_snapshot": "1.8100",
    "our_snapshot_at": "2026-11-07T10:48:49.395Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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-11-07T10:13:55.000Z",
    "fragment_basis": "page",
    "source_page_at": "2026-11-07T10:13:55.000Z",
    "detected_at": "2026-11-07T10:49:45.947Z",
    "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": "Over/Under 2.5 goals",
    "choice": "under 2.5",
    "author_odds": "1.83",
    "market_key": "total",
    "choice_key": "under",
    "period": "match",
    "line": "2.5",
    "subject": "goals_total",
    "in_words": "Over/Under 2.5 goals: under 2.5 at 1.83"
   },
   "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": "ad0027a0aae50b1c12f439be4400a859163590d6a88791cd09d0f81de05a103a",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Over/Under 2.5 goals",
     "choice": "under 2.5",
     "decimal_odds": "1.83",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T10:54:47.710Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "12cc4956a4aeeabcac92dc293fe0bed33e3923b52a1132060cc07a9c8156b161",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Over/Under 2.5 goals",
     "choice": "under 2.5",
     "decimal_odds": "1.8100",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T10:55:05.894Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Dailysports",
    "publisher": "Dailysports",
    "forecaster": "Dailysports",
    "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://dailysports.net/predictions/can-le-havre-finally-end-their-losing-run-against-lorient-prediction-november-8-2026/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  },
  {
   "observation_id": "n-c3ba72ead8b873b72b4d10ab",
   "url": "/authors/aleksej-tarabrin/picks/2/#pick-n-c3ba72ead8b873b72b4d10ab",
   "quote_text": "Le Havre sub 1.5 goluri\n\nCf\n\nCote\n\n1.45",
   "fragment_from": 2258,
   "fragment_to": 2297,
   "quote_allowed": true,
   "source_info": {
    "medium": "website",
    "url": "https://legalbet.ro/centrul-de-pariere/le-havre-lorient-08-11-2026/",
    "display_name": null,
    "speaker": "Alex Tarabrin",
    "authorship": "channel_owner",
    "media_from_ms": null,
    "bundle_id": "60b0491b29062b702f897f7ba688c0fa11efd70b1cabd1d7f3df0223f9f0588a",
    "material_removed": false
   },
   "published_at": null,
   "detected_at": "2026-11-07T18:19:40.927Z",
   "executed_at": "2026-11-07T18:22:31.846Z",
   "statement_class": "priced",
   "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": "Team goals over/under 1.5",
   "outcome_label": "Le Havre under 1.5",
   "odds_set": {
    "by_author": "1.45",
    "our_snapshot": "1.4600",
    "our_snapshot_at": "2026-11-07T18:16:49.499Z",
    "our_snapshot_source": "market snapshot",
    "closing": null,
    "closing_source": null
   },
   "stake_hundredths": 10000,
   "result": "unknown",
   "simulation_change_hundredths": 0,
   "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": null,
    "fragment_basis": "no",
    "source_page_at": null,
    "detected_at": "2026-11-07T18:19:40.927Z",
    "archive_snapshot_at": null,
    "flags": [
     "no_date"
    ],
    "flag_words": "The source states no publication date.",
    "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": "Team goals over/under 1.5",
    "choice": "Le Havre under 1.5",
    "author_odds": "1.45",
    "market_key": "team_total",
    "choice_key": "1-under",
    "period": "match",
    "line": "1.5",
    "subject": "goals_total",
    "in_words": "Team goals over/under 1.5: Le Havre under 1.5 at 1.45"
   },
   "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": "06ca6d51c8da4567f2e6cb0e6649268bd0e963d4066720070d8c905986b9c390",
     "series_key": "author_price",
     "series_label": "At the author's stated price",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Team goals over/under 1.5",
     "choice": "Le Havre under 1.5",
     "decimal_odds": "1.45",
     "odds_role": "author_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T18:22:22.781Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    },
    {
     "operation_id": "1fbc96bc51163873ec557a1d10089227a4e849156140395b44daea5b64d259e4",
     "series_key": "market_price",
     "series_label": "At an independent odds snapshot",
     "derived": false,
     "site_simulation": true,
     "author_words": true,
     "market_label": "Team goals over/under 1.5",
     "choice": "Le Havre under 1.5",
     "decimal_odds": "1.4600",
     "odds_role": "market_price",
     "stake_hundredths": 10000,
     "status": "confirmed",
     "status_text": "Executed",
     "result": null,
     "result_words": null,
     "change_hundredths": null,
     "executed_at": "2026-11-07T18:22:31.846Z",
     "methodology_version": "2.2",
     "on_claim_market": true,
     "replaced": false
    }
   ],
   "corrections": [],
   "funnel_stage": "qualifying_pick",
   "authorship": {
    "material_author": "Alex Tarabrin",
    "publisher": "Legalbet.ro",
    "forecaster": "Alex Tarabrin",
    "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://legalbet.ro/centrul-de-pariere/le-havre-lorient-08-11-2026/",
    "excluded_from_individual_summaries": false,
    "verdict_by": null,
    "verdict_line": null
   },
   "correction": null
  }
 ],
 "record_counts": {
  "dictionary_version": "1",
  "dictionary_url": "/methodology/#words",
  "statements": 10,
  "predictions": 10,
  "authors": 7,
  "statements_before_kickoff": 10,
  "settled_picks": 0,
  "duplicates": 0,
  "junk": {}
 },
 "match_summary": {
  "contract_version": "1",
  "final_score": null,
  "state_words": "scheduled",
  "distinct_predictions": 10,
  "sources": 7,
  "one_source": false,
  "sentence": "Forecast Record recorded 10 distinct predictions from 7 authors or editorial sources before kick-off; their selections are listed below by market.",
  "who_predicted_what": [
   {
    "record_id": "n-e93fc5c833344cb5330ca953",
    "url": "/sources/footballpredictions-com/picks/397/#pick-n-e93fc5c833344cb5330ca953",
    "author": "FootballPredictions.com",
    "author_url": "/sources/footballpredictions-com/",
    "market": "1X2, match result",
    "selection": "Lorient",
    "outcome": "Pending",
    "price": null,
    "published_at": "2026-11-02T15:43:04.000Z",
    "recorded_at": "2026-11-05T02:19:32.037Z",
    "lead_hours": 85.9,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-90d60edf369e3402cfc9892d",
    "url": "/authors/ivan/picks/4/#pick-n-90d60edf369e3402cfc9892d",
    "author": "Ivan",
    "author_url": "/authors/ivan/",
    "market": "1X2, match result",
    "selection": "Lorient",
    "outcome": "Pending",
    "price": null,
    "published_at": "2026-11-05T07:36:37.000Z",
    "recorded_at": "2026-11-05T07:39:33.082Z",
    "lead_hours": 80.6,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-b0a8bd49500704ef143bc3aa",
    "url": "/authors/james-milton/picks/37/#pick-n-b0a8bd49500704ef143bc3aa",
    "author": "James Milton",
    "author_url": "/authors/james-milton/",
    "market": "1X2, match result",
    "selection": "Le Havre",
    "outcome": "Pending",
    "price": "2.88",
    "published_at": "2026-11-05T16:00:00.000Z",
    "recorded_at": "2026-11-05T16:18:29.001Z",
    "lead_hours": 71.9,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-5165944dfa32585331ceee11",
    "url": "/authors/byron-david/picks/6/#pick-n-5165944dfa32585331ceee11",
    "author": "Byron David",
    "author_url": "/authors/byron-david/",
    "market": "Both teams to score",
    "selection": "no",
    "outcome": "Pending",
    "price": "1.95",
    "published_at": "2026-11-06T12:10:32.000Z",
    "recorded_at": "2026-11-06T12:24:17.439Z",
    "lead_hours": 51.8,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-e7126c08288f36f38bc93a08",
    "url": "/authors/joel-lefevre/picks/5/#pick-n-e7126c08288f36f38bc93a08",
    "author": "Joel Lefevre",
    "author_url": "/authors/joel-lefevre/",
    "market": "Correct score",
    "selection": "Le Havre 1-0 Lorient",
    "outcome": "Pending",
    "price": null,
    "published_at": "2026-11-06T00:01:24.000Z",
    "recorded_at": "2026-11-06T03:10:10.497Z",
    "lead_hours": 61.1,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-fe1025ec53f756a40c1790e3",
    "url": "/authors/byron-david/picks/6/#pick-n-fe1025ec53f756a40c1790e3",
    "author": "Byron David",
    "author_url": "/authors/byron-david/",
    "market": "Double chance",
    "selection": "draw or Lorient",
    "outcome": "Pending",
    "price": "1.36",
    "published_at": "2026-11-06T12:10:32.000Z",
    "recorded_at": "2026-11-06T12:24:17.439Z",
    "lead_hours": 51.8,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-2ac557060e3b57025ddecab8",
    "url": "/authors/ivan/picks/4/#pick-n-2ac557060e3b57025ddecab8",
    "author": "Ivan",
    "author_url": "/authors/ivan/",
    "market": "Double chance",
    "selection": "draw or Lorient",
    "outcome": "Pending",
    "price": null,
    "published_at": "2026-11-05T07:36:37.000Z",
    "recorded_at": "2026-11-05T07:39:33.082Z",
    "lead_hours": 80.6,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-1df6cfe18a4f172133e33ad4",
    "url": "/authors/byron-david/picks/6/#pick-n-1df6cfe18a4f172133e33ad4",
    "author": "Byron David",
    "author_url": "/authors/byron-david/",
    "market": "Over/Under 2.5 goals",
    "selection": "under 2.5",
    "outcome": "Pending",
    "price": "1.75",
    "published_at": "2026-11-06T12:10:32.000Z",
    "recorded_at": "2026-11-06T12:24:17.439Z",
    "lead_hours": 51.8,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-4c23cb82ba5d120a4ae257e5",
    "url": "/sources/dailysports-net/picks/34/#pick-n-4c23cb82ba5d120a4ae257e5",
    "author": "Dailysports",
    "author_url": "/sources/dailysports-net/",
    "market": "Over/Under 2.5 goals",
    "selection": "under 2.5",
    "outcome": "Pending",
    "price": "1.83",
    "published_at": "2026-11-07T10:13:55.000Z",
    "recorded_at": "2026-11-07T10:49:45.947Z",
    "lead_hours": 29.4,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   },
   {
    "record_id": "n-c3ba72ead8b873b72b4d10ab",
    "url": "/authors/aleksej-tarabrin/picks/2/#pick-n-c3ba72ead8b873b72b4d10ab",
    "author": "Aleksej Tarabrin",
    "author_url": "/authors/aleksej-tarabrin/",
    "market": "Team goals over/under 1.5",
    "selection": "Le Havre under 1.5",
    "outcome": "Pending",
    "price": "1.45",
    "published_at": null,
    "recorded_at": "2026-11-07T18:19:40.927Z",
    "lead_hours": 21.9,
    "origin": "Recorded by us before kick-off",
    "outcome_reason": null,
    "before_kickoff": true,
    "attribution": null
   }
  ],
  "by_market": [
   {
    "market": "1X2, match result",
    "predictions": 3,
    "sources": 3,
    "one_source": false,
    "eligible": 3,
    "different_selections": 0,
    "selections": [
     {
      "selection": "Lorient",
      "predictions": 2,
      "eligible": 2
     },
     {
      "selection": "Le Havre",
      "predictions": 1,
      "eligible": 1
     }
    ],
    "median_odds": "2.69",
    "odds_from_author": 1,
    "odds_from_snapshot": 1
   },
   {
    "market": "Double chance",
    "predictions": 2,
    "sources": 2,
    "one_source": false,
    "eligible": 2,
    "different_selections": 0,
    "selections": [
     {
      "selection": "draw or Lorient",
      "predictions": 2,
      "eligible": 2
     }
    ],
    "median_odds": "1.40",
    "odds_from_author": 1,
    "odds_from_snapshot": 1
   },
   {
    "market": "Over/Under 2.5 goals",
    "predictions": 2,
    "sources": 2,
    "one_source": false,
    "eligible": 2,
    "different_selections": 0,
    "selections": [
     {
      "selection": "under 2.5",
      "predictions": 2,
      "eligible": 2
     }
    ],
    "median_odds": "1.79",
    "odds_from_author": 2,
    "odds_from_snapshot": 0
   },
   {
    "market": "Both teams to score",
    "predictions": 1,
    "sources": 1,
    "one_source": true,
    "eligible": 1,
    "different_selections": 0,
    "selections": [
     {
      "selection": "no",
      "predictions": 1,
      "eligible": 1
     }
    ],
    "median_odds": "1.95",
    "odds_from_author": 1,
    "odds_from_snapshot": 0
   },
   {
    "market": "Correct score",
    "predictions": 1,
    "sources": 1,
    "one_source": true,
    "eligible": 1,
    "different_selections": 0,
    "selections": [
     {
      "selection": "Le Havre 1-0 Lorient",
      "predictions": 1,
      "eligible": 1
     }
    ],
    "implied_by_score": [
     {
      "selection": "Le Havre",
      "predictions": 1
     }
    ],
    "median_odds": null,
    "odds_from_author": 0,
    "odds_from_snapshot": 0
   },
   {
    "market": "Team goals over/under 1.5",
    "predictions": 1,
    "sources": 1,
    "one_source": true,
    "eligible": 1,
    "different_selections": 0,
    "selections": [
     {
      "selection": "Le Havre under 1.5",
      "predictions": 1,
      "eligible": 1
     }
    ],
    "median_odds": "1.45",
    "odds_from_author": 1,
    "odds_from_snapshot": 0
   }
  ],
  "found_after_kickoff": 0,
  "selections_before_kickoff": 10,
  "independent_sources": 7,
  "same_material_repeats": 0,
  "sources_list": [
   {
    "source": "footballwhispers.com",
    "materials": 1,
    "authors": 1,
    "selections": 3
   },
   {
    "source": "svijetkladjenja.com",
    "materials": 1,
    "authors": 1,
    "selections": 2
   },
   {
    "source": "dailysports.net",
    "materials": 1,
    "authors": 1,
    "selections": 1
   },
   {
    "source": "footballpredictions.com",
    "materials": 1,
    "authors": 1,
    "selections": 1
   },
   {
    "source": "legalbet.ro",
    "materials": 1,
    "authors": 1,
    "selections": 1
   },
   {
    "source": "racingpost.com",
    "materials": 1,
    "authors": 1,
    "selections": 1
   },
   {
    "source": "sportsmole.co.uk",
    "materials": 1,
    "authors": 1,
    "selections": 1
   }
  ],
  "what_happened": null,
  "scenarios": [
   {
    "author": "Byron David",
    "author_url": "/authors/byron-david/",
    "picks": 3,
    "record_ids": [
     "n-fe1025ec53f756a40c1790e3",
     "n-1df6cfe18a4f172133e33ad4",
     "n-5165944dfa32585331ceee11"
    ],
    "markets": [
     "Double chance",
     "Over/Under 2.5 goals",
     "Both teams to score"
    ],
    "selections": [
     "draw or Lorient",
     "under 2.5",
     "no"
    ],
    "prices": [
     "1.36",
     "1.75",
     "1.95"
    ],
    "outcomes": [
     "Pending",
     "Pending",
     "Pending"
    ],
    "scenario": "draw or Lorient · under 2.5 goals · Both teams to score: no",
    "result": "pending",
    "recorded_at": "2026-11-06T12:24:17.439Z",
    "lead_hours": 51.8,
    "evidence_urls": [
     "/authors/byron-david/picks/6/#pick-n-fe1025ec53f756a40c1790e3",
     "/authors/byron-david/picks/6/#pick-n-1df6cfe18a4f172133e33ad4",
     "/authors/byron-david/picks/6/#pick-n-5165944dfa32585331ceee11"
    ]
   },
   {
    "author": "Ivan",
    "author_url": "/authors/ivan/",
    "picks": 2,
    "record_ids": [
     "n-90d60edf369e3402cfc9892d",
     "n-2ac557060e3b57025ddecab8"
    ],
    "markets": [
     "1X2, match result",
     "Double chance"
    ],
    "selections": [
     "Lorient",
     "draw or Lorient"
    ],
    "prices": [
     null,
     null
    ],
    "outcomes": [
     "Pending",
     "Pending"
    ],
    "scenario": "Lorient · draw or Lorient",
    "result": "pending",
    "recorded_at": "2026-11-05T07:39:33.082Z",
    "lead_hours": 80.6,
    "evidence_urls": [
     "/authors/ivan/picks/4/#pick-n-90d60edf369e3402cfc9892d",
     "/authors/ivan/picks/4/#pick-n-2ac557060e3b57025ddecab8"
    ]
   }
  ],
  "lead_time": {
   "contract_version": 1,
   "threshold_hours": 2.0,
   "picks": 10,
   "before_kickoff": 10,
   "after_kickoff": 0,
   "at_least_2h": 10,
   "share_2h_plus": 100.0,
   "median_hours": 56.5,
   "min_hours": 21.9,
   "max_hours": 85.9,
   "words": "Hours between the moment we recorded the pick and kick-off; the share counts picks recorded at least two hours before kick-off."
  }
 },
 "title_tag": "Le Havre vs Lorient Prediction: Tipster Picks — 8 Nov 2026",
 "snapshots": {
  "counting_rule": "1",
  "early": {
   "id": "sr-91dbe0e7113307c8f31ebb8c",
   "type_code": "early",
   "moment_at": "2026-11-05T14:19:48.338Z",
   "freeze_at": "2026-11-05T14:19:48.338Z",
   "approach": "at_the_time",
   "methodology_version": "2.2",
   "counting_rule": "1",
   "figures": {
    "chain": {
     "admissible": 2,
     "publications": 2,
     "comparable": 2,
     "unique": 2,
     "contributions": 2
    },
    "group_list": [
     {
      "phrase": "1X2, match result — Most common recorded selection: Lorient (1 of 1 eligible)",
      "source_group": "1x2|*|match|*|*#explicit",
      "leader": "2",
      "n": 1,
      "market_label": "1X2, match result",
      "row_list": [
       {
        "figure": 1,
        "in_words": "Lorient",
        "choice": "2"
       }
      ]
     },
     {
      "phrase": "Double chance — Most common recorded selection: draw or Lorient (1 of 1 eligible)",
      "source_group": "double_chance|*|match|*|*#explicit",
      "leader": "X2",
      "n": 1,
      "market_label": "Double chance",
      "row_list": [
       {
        "figure": 1,
        "in_words": "draw or Lorient",
        "choice": "X2"
       }
      ]
     }
    ],
    "counting_rule": "1",
    "different_products": 0,
    "differing_choices": 0,
    "not_counted": 0
   },
   "composition": [
    "n-2ac557060e3b57025ddecab8",
    "n-e93fc5c833344cb5330ca953"
   ],
   "hash": "05dc5ee983b4ed450023dbd50eb5d0f4e732c064dbd54daf72dfd75eabbd57a4"
  },
  "closing_line": null,
  "author_rows": [],
  "late_additions": null,
  "chips": null
 },
 "match_card": {
  "revision": "1",
  "gates": "B",
  "open_to_search": true,
  "inputs": {
   "prediction_count": 3,
   "publisher_count": 3,
   "contract": "1x2|*|match|*|*#explicit",
   "forecaster_count": 7,
   "publishers_all": 7,
   "topic_count": 2,
   "checked_count": false,
   "competition_authors": [
    {
     "settled_count": 119
    },
    {
     "settled_count": 48
    },
    {
     "settled_count": 36
    },
    {
     "settled_count": 21
    },
    {
     "settled_count": 18
    },
    {
     "settled_count": 12
    },
    {
     "settled_count": 11
    },
    {
     "settled_count": 11
    },
    {
     "settled_count": 11
    },
    {
     "settled_count": 4
    },
    {
     "settled_count": 4
    },
    {
     "settled_count": 4
    },
    {
     "settled_count": 4
    },
    {
     "settled_count": 3
    },
    {
     "settled_count": 3
    },
    {
     "settled_count": 2
    },
    {
     "settled_count": 1
    },
    {
     "settled_count": 1
    },
    {
     "settled_count": 1
    },
    {
     "settled_count": 1
    },
    {
     "settled_count": 1
    }
   ],
   "started": false,
   "facts_only": false,
   "counted_predictions": 10,
   "counted_sources": 7
  },
  "gates_words": "Open to search: 10 counted predictions from 7 different sources",
  "created_from": "prediction_page",
  "prediction_count": 6,
  "publisher_count": 7,
  "forecaster_count": 4,
  "newcomer_count": 4,
  "competition_authors": [
   {
    "name_shown": "Samet Yalica",
    "url": "/authors/samet-yalica/",
    "source_group": "tipsters",
    "settled_count": 48,
    "match_count": 200,
    "portion": "archived",
    "portion_words": "Archived before kick-off · reconstructed at the last pre-match archive price",
    "return_percent": "-6.6",
    "too_few": false
   },
   {
    "name_shown": "Baba",
    "url": "/authors/baba/",
    "source_group": "tipsters",
    "settled_count": 36,
    "match_count": 14,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "25.3",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-5ed8b1279a481fcc4214",
      "code_name": "P-09",
      "title_tier": "dated_record",
      "badge_label": "2. Bundesliga · 5/8 · 26 Oct",
      "body": "2. Bundesliga, week of 26 Oct 2026: 5/8 result calls right, first of 6 tipsters and sources with 3+ calls",
      "provenance": "live",
      "anchor_id": "title-5ed8b1279a48",
      "url": null,
      "tier": null,
      "event_at": "2026-11-01"
     },
     {
      "title_id": "zk-37e18fe87e18079a2945",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 7 · 31 Oct",
      "body": "Only one right of 7 tipsters and sources · Draw · Kocaelispor v Rizespor · 31 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-37e18fe87e18",
      "url": null,
      "tier": null,
      "event_at": "2026-10-31"
     }
    ]
   },
   {
    "name_shown": "Dailysports",
    "url": "/sources/dailysports-net/",
    "source_group": "websites",
    "settled_count": 18,
    "match_count": 24,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "25.1",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-1f2dc73852fb72ab0133",
      "code_name": "P-09",
      "title_tier": "dated_record",
      "badge_label": "Bundesliga · 2/3 · 26 Oct",
      "body": "Bundesliga, week of 26 Oct 2026: 2/3 result calls right, first of 22 tipsters and sources with 3+ calls",
      "provenance": "live",
      "anchor_id": "title-1f2dc73852fb",
      "url": null,
      "tier": null,
      "event_at": "2026-11-01"
     },
     {
      "title_id": "zk-ca7508509979566f1f5d",
      "code_name": "S-01",
      "title_tier": "dated_record",
      "badge_label": "8 right in a row · 12 Oct",
      "body": "8 matches in a row, every pick correct · 11 Oct–12 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-ca7508509979",
      "url": null,
      "tier": null,
      "event_at": "2026-10-12"
     }
    ]
   },
   {
    "name_shown": "Adeyeye Oluwapelumi",
    "url": "/authors/adeyeye-oluwapelumi/",
    "source_group": "experts",
    "settled_count": 16,
    "match_count": 15,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "62.5",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-8da5bd8d8162c9e9ea53",
      "code_name": "CS-10",
      "title_tier": "dated_record",
      "badge_label": "Exact score 1–2 · 26 Oct",
      "body": "Exact score 1–2 · Santa Clara v Benfica · 26 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-8da5bd8d8162",
      "url": null,
      "tier": null,
      "event_at": "2026-10-26"
     },
     {
      "title_id": "zk-ec7cb1a48c134e50ee80",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 3.40 · 15 Oct",
      "body": "Away win at 3.40 · TSG Hoffenheim v Beşiktaş · 15 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-ec7cb1a48c13",
      "url": null,
      "tier": null,
      "event_at": "2026-10-15"
     }
    ]
   },
   {
    "name_shown": "Enrico Giordano",
    "url": "/authors/enrico-giordano/",
    "source_group": "tipsters",
    "settled_count": 11,
    "match_count": 296,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "-13.9",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-4117c0f114b776ec945d",
      "code_name": "P-09",
      "title_tier": "dated_record",
      "badge_label": "Eredivisie · 2/3 · 12 Oct",
      "body": "Eredivisie, week of 12 Oct 2026: 2/3 result calls right, first of 6 tipsters and sources with 3+ calls",
      "provenance": "live",
      "anchor_id": "title-4117c0f114b7",
      "url": null,
      "tier": null,
      "event_at": "2026-10-18"
     },
     {
      "title_id": "zk-4eae8de48fafb3d634c4",
      "code_name": "S-01",
      "title_tier": "dated_record",
      "badge_label": "6 right in a row · 31 Oct",
      "body": "6 matches in a row, every pick correct · 31 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-4eae8de48faf",
      "url": null,
      "tier": null,
      "event_at": "2026-10-31"
     }
    ]
   },
   {
    "name_shown": "Marvellous Adepoju",
    "url": "/authors/marvellous-adepoju/",
    "source_group": "experts",
    "settled_count": 11,
    "match_count": 7,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "-7.7",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-89eb02ffbe61527e7d1f",
      "code_name": "P-01",
      "title_tier": "dated_record",
      "badge_label": "4/5 · week of 26 Oct",
      "body": "4/5 result calls right · week of 26 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-89eb02ffbe61",
      "url": null,
      "tier": null,
      "event_at": "2026-11-01"
     },
     {
      "title_id": "zk-c52190c3368ca2d50892",
      "code_name": "CS-10",
      "title_tier": "dated_record",
      "badge_label": "Exact score 1–2 · 26 Oct",
      "body": "Exact score 1–2 · Santa Clara v Benfica · 26 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-c52190c3368c",
      "url": null,
      "tier": null,
      "event_at": "2026-10-26"
     }
    ]
   },
   {
    "name_shown": "Tobias Brandt",
    "url": "/authors/tobias-brandt/",
    "source_group": "tipsters",
    "settled_count": 11,
    "match_count": 7,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "-34.3",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-a918907756db44b32205",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 11 · 17 Oct",
      "body": "Only one right of 11 tipsters and sources · Home win · Hamburger SV v VfB Stuttgart · 17 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-a918907756db",
      "url": null,
      "tier": null,
      "event_at": "2026-10-17"
     },
     {
      "title_id": "zk-124f63495b68bb44a349",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 8.50 · 31 Oct",
      "body": "Draw at 8.50 · Feyenoord v Fortuna Sittard · 31 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-124f63495b68",
      "url": null,
      "tier": null,
      "event_at": "2026-10-31"
     }
    ]
   },
   {
    "name_shown": "Free Super Tips",
    "url": "/sources/free-super-tips/",
    "source_group": "websites",
    "settled_count": 10,
    "match_count": 12,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": "100.4",
    "too_few": false,
    "header_titles": [
     {
      "title_id": "zk-73ce7fd9e5f9fd07b8cb",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 8 · 17 Oct",
      "body": "Only one right of 8 tipsters and sources · Away win · Brentford v Liverpool · 17 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-73ce7fd9e5f9",
      "url": null,
      "tier": null,
      "event_at": "2026-10-17"
     },
     {
      "title_id": "zk-40ac82fdc6c742107246",
      "code_name": "CS-10",
      "title_tier": "dated_record",
      "badge_label": "Exact score 3–1 · 6 Nov",
      "body": "Exact score 3–1 · Toulouse v RC Strasbourg · 6 Nov 2026",
      "provenance": "live",
      "anchor_id": "title-40ac82fdc6c7",
      "url": null,
      "tier": null,
      "event_at": "2026-11-06"
     }
    ]
   },
   {
    "name_shown": "Joshua Cole",
    "url": "/authors/joshua-cole/",
    "source_group": "experts",
    "settled_count": 9,
    "match_count": 10,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-12229464e25b26694d54",
      "code_name": "P-02",
      "title_tier": "dated_record",
      "badge_label": "No.1 · week of 12 Oct",
      "body": "No.1 of 11 · 9/11 result calls right · week of 12 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-12229464e25b",
      "url": null,
      "tier": "No.1",
      "event_at": "2026-10-18"
     },
     {
      "title_id": "zk-1f2df03495edde3b9407",
      "code_name": "P-09",
      "title_tier": "dated_record",
      "badge_label": "Süper Lig · 3/3 · 19 Oct",
      "body": "Süper Lig, week of 19 Oct 2026: 3/3 result calls right, first of 5 tipsters and sources with 3+ calls",
      "provenance": "live",
      "anchor_id": "title-1f2df03495ed",
      "url": null,
      "tier": null,
      "event_at": "2026-10-25"
     }
    ]
   },
   {
    "name_shown": "Ali Demir",
    "url": "/authors/ali-demir/",
    "source_group": "tipsters",
    "settled_count": 4,
    "match_count": 5,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-e8d773eb29699a689dc2",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 6 · 25 Oct",
      "body": "Only one right of 6 tipsters and sources · Draw · Santos v Bahia · 25 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-e8d773eb2969",
      "url": null,
      "tier": null,
      "event_at": "2026-10-25"
     },
     {
      "title_id": "zk-b3dc711a627ebea53e70",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 4.70 · 24 Oct",
      "body": "Home win at 4.70 · Aston Villa v Manchester City · 24 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-b3dc711a627e",
      "url": null,
      "tier": null,
      "event_at": "2026-10-24"
     }
    ]
   },
   {
    "name_shown": "Fabian Schuster",
    "url": "/authors/fabian-schuster/",
    "source_group": "tipsters",
    "settled_count": 3,
    "match_count": 7,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-995afab395afa7f853bd",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 7 · 6 Nov",
      "body": "Only one right of 7 tipsters and sources · Draw · Eintracht Braunschweig v Cottbus · 6 Nov 2026",
      "provenance": "live",
      "anchor_id": "title-995afab395af",
      "url": null,
      "tier": null,
      "event_at": "2026-11-06"
     },
     {
      "title_id": "zk-b9b44f30079e1d970ae9",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 3.73 · 24 Oct",
      "body": "Draw at 3.73 · 1. FC Köln v FC Schalke 04 · 24 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-b9b44f30079e",
      "url": null,
      "tier": null,
      "event_at": "2026-10-24"
     }
    ]
   },
   {
    "name_shown": "FootballPredictions.net",
    "url": "/sources/footballpredictions-net/",
    "source_group": "websites",
    "settled_count": 3,
    "match_count": 12,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-47cc45887781ed2bc810",
      "code_name": "P-09",
      "title_tier": "dated_record",
      "badge_label": "1st of 3 · week of 5 Oct",
      "body": "UEFA Nations League, week of 5 Oct 2026: 4/5 result calls right, first of 3 tipsters and sources with 3+ calls",
      "provenance": "live",
      "anchor_id": "title-47cc45887781",
      "url": null,
      "tier": null,
      "event_at": "2026-10-11"
     },
     {
      "title_id": "zk-3f294e364978e9d313ed",
      "code_name": "S-01",
      "title_tier": "dated_record",
      "badge_label": "5 right in a row · 6 Oct",
      "body": "5 matches in a row, every pick correct · 6 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-3f294e364978",
      "url": null,
      "tier": null,
      "event_at": "2026-10-06"
     }
    ]
   },
   {
    "name_shown": "Infobetting",
    "url": "/sources/infobetting-com/",
    "source_group": "websites",
    "settled_count": 3,
    "match_count": 9,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-5f259bebd944649c02ef",
      "code_name": "S-01",
      "title_tier": "dated_record",
      "badge_label": "7 right in a row · 1 Nov",
      "body": "7 matches in a row, every pick correct · 31 Oct–1 Nov 2026",
      "provenance": "live",
      "anchor_id": "title-5f259bebd944",
      "url": null,
      "tier": null,
      "event_at": "2026-11-01"
     },
     {
      "title_id": "zk-abb804e6fe445ae3046d",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 3.25 · 25 Oct",
      "body": "Draw at 3.25 · Angers v Lorient · 25 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-abb804e6fe44",
      "url": null,
      "tier": null,
      "event_at": "2026-10-25"
     }
    ]
   },
   {
    "name_shown": "Jonas Meyer",
    "url": "/authors/jonas-meyer/",
    "source_group": "tipsters",
    "settled_count": 3,
    "match_count": 3,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true,
    "header_titles": [
     {
      "title_id": "zk-225e034bae6cf63b4f0b",
      "code_name": "C-02",
      "title_tier": "dated_record",
      "badge_label": "Only right of 8 · 10 Oct",
      "body": "Only one right of 8 tipsters and sources · Draw · Monaco v Toulouse · 10 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-225e034bae6c",
      "url": null,
      "tier": null,
      "event_at": "2026-10-10"
     },
     {
      "title_id": "zk-567225b1675f40afc96e",
      "code_name": "E-07",
      "title_tier": "dated_record",
      "badge_label": "Correct at 3.75 · 23 Oct",
      "body": "Draw at 3.75 · Deportivo Alavés v Málaga CF · 23 Oct 2026",
      "provenance": "live",
      "anchor_id": "title-567225b1675f",
      "url": null,
      "tier": null,
      "event_at": "2026-10-23"
     }
    ]
   },
   {
    "name_shown": "Aaron Ashley",
    "url": "/authors/aaron-ashley/",
    "source_group": "experts",
    "settled_count": 1,
    "match_count": 1,
    "portion": "live",
    "portion_words": "Recorded before kick-off · return at our recorded market price",
    "return_percent": null,
    "too_few": true
   }
  ],
  "competition_authors_total": 20,
  "competition_authors_10": 8,
  "full": false,
  "facts_only": false,
  "checked_count": null,
  "window": {
   "d_minus_14_at": "2026-10-25T16:15:00.000Z",
   "d_minus_3_at": "2026-11-05T16:15:00.000Z"
  },
  "first_screen": {
   "body": "As of 7 November 2026, 18:19 UTC (latest recorded prediction), 3 tipsters and sources with 10 or more predictions checked against the final score to date had a 90-minute match-result prediction: Le Havre 1 · Draw 0 · Lorient 2. Another 1 predicted an exact score (implied: Le Havre 1 · Draw 0 · Lorient 0). 3 gave other markets only.",
   "byline": "Split of recorded tipsters and sources.",
   "outcome_split": {
    "1": 1,
    "X": 0,
    "2": 2
   },
   "forecasters_outcome": 3,
   "from_score": {
    "1": 1
   },
   "forecasters_from_score": 1,
   "other_markets_only": 3,
   "newcomers": null,
   "market_label": "Market favourite: Lorient · implied 38%",
   "market_at": "2026-11-07T19:52:23.438Z",
   "predictions_at": "2026-11-07T18:19:40.927Z",
   "comparison": "Tipsters and sources lean to Lorient more than the market: 2 of 3 tipsters and sources with 10 or more predictions checked against the final score to date picked Lorient; the market prices Lorient at 38.0%."
  },
  "who_what": {
   "contracts": [
    {
     "contract_code": "1x2|*|match|*|*#explicit",
     "source_group": "explicit",
     "market_label": "1X2, match result",
     "market_key": "1x2",
     "choices": [
      {
       "code_name": "1",
       "in_words": "Le Havre",
       "tips": [
        {
         "entry_id": "n-b0a8bd49500704ef143bc3aa",
         "author_name": "James Milton",
         "author_href": "/authors/james-milton/",
         "source_group": "experts",
         "trust_tier": "established",
         "market_label": "1X2, match result",
         "market_key": "1x2",
         "choice": "Le Havre",
         "choice_key": "1",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-05T16:18:29.001Z",
         "posted_at": "2026-11-05T16:00:00.000Z",
         "author_quoted_price": "2.88",
         "our_snapshot": "2.8000",
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/authors/james-milton/picks/37/#pick-n-b0a8bd49500704ef143bc3aa",
         "original": "https://www.racingpost.com/sport/football-tips/weekend-football-predictions-free-betting-accumulator-tips-from-james-milton-am8GL3O4EbHP/",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 3,
          "won": 2,
          "void": 0,
          "return_percent": "35.8",
          "period_from": "2026-11-06",
          "period_to": "2026-11-07",
          "portion": "live",
          "market_label": "1X2, match result"
         },
         "prematch_tally": null,
         "source_type": "media",
         "entry_record": {
          "scope": "market",
          "competition": null,
          "market_key": "1x2",
          "portion": "archived",
          "n": 16,
          "won": 6,
          "lost": 10,
          "void": 0,
          "net_points_hundredths": -8900,
          "return_percent": "-5.6",
          "avg_odds": "2.78",
          "odds_from_author": 11,
          "odds_from_snapshot": 5,
          "league_market_n": 0,
          "market_n": 16,
          "small_sample": false,
          "period_from": "2024-11-05",
          "period_to": "2026-05-10",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        }
       ],
       "figure": 1
      }
     ],
     "n": 1,
     "publisher_count": 1
    },
    {
     "contract_code": "total|2.5|match|*|*#explicit",
     "source_group": "explicit",
     "market_label": "Over/Under 2.5 goals",
     "market_key": "total",
     "choices": [
      {
       "code_name": "under",
       "in_words": "under 2.5",
       "tips": [
        {
         "entry_id": "n-4c23cb82ba5d120a4ae257e5",
         "author_name": "Dailysports",
         "author_href": "/sources/dailysports-net/",
         "source_group": "websites",
         "trust_tier": "tracked",
         "market_label": "Over/Under 2.5 goals",
         "market_key": "total",
         "choice": "under 2.5",
         "choice_key": "under",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-07T10:49:45.947Z",
         "posted_at": "2026-11-07T10:13:55.000Z",
         "author_quoted_price": "1.83",
         "our_snapshot": "1.8100",
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/sources/dailysports-net/picks/34/#pick-n-4c23cb82ba5d120a4ae257e5",
         "original": "https://dailysports.net/predictions/can-le-havre-finally-end-their-losing-run-against-lorient-prediction-november-8-2026/",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 73,
          "won": 41,
          "void": 3,
          "return_percent": "2.0",
          "period_from": "2026-10-11",
          "period_to": "2026-11-05",
          "portion": "live",
          "market_label": "Over/Under 2.5 goals"
         },
         "prematch_tally": null,
         "source_type": "telegram_channels",
         "entry_record": {
          "scope": "market",
          "competition": null,
          "market_key": "total",
          "portion": "live",
          "n": 73,
          "won": 41,
          "lost": 29,
          "void": 3,
          "net_points_hundredths": 14119,
          "return_percent": "2.0",
          "avg_odds": "1.73",
          "odds_from_author": 71,
          "odds_from_snapshot": 2,
          "league_market_n": 5,
          "market_n": 73,
          "small_sample": false,
          "period_from": "2026-10-11",
          "period_to": "2026-11-05",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        },
        {
         "entry_id": "n-1df6cfe18a4f172133e33ad4",
         "author_name": "Byron David",
         "author_href": "/authors/byron-david/",
         "source_group": "experts",
         "trust_tier": "tracked",
         "market_label": "Over/Under 2.5 goals",
         "market_key": "total",
         "choice": "under 2.5",
         "choice_key": "under",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-06T12:24:17.439Z",
         "posted_at": "2026-11-06T12:10:32.000Z",
         "author_quoted_price": "1.75",
         "our_snapshot": "1.8200",
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/authors/byron-david/picks/6/#pick-n-1df6cfe18a4f172133e33ad4",
         "original": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 3,
          "won": 1,
          "void": 0,
          "return_percent": "-40.7",
          "period_from": "2026-10-10",
          "period_to": "2026-10-31",
          "portion": "live",
          "market_label": "Over/Under 2.5 goals"
         },
         "prematch_tally": null,
         "source_type": "media",
         "entry_record": {
          "scope": "all",
          "competition": null,
          "market_key": null,
          "portion": "live",
          "n": 24,
          "won": 12,
          "lost": 12,
          "void": 0,
          "net_points_hundredths": 47339,
          "return_percent": "19.7",
          "avg_odds": "2.09",
          "odds_from_author": 24,
          "odds_from_snapshot": 0,
          "league_market_n": 0,
          "market_n": 3,
          "small_sample": true,
          "period_from": "2026-10-04",
          "period_to": "2026-10-31",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        }
       ],
       "figure": 2
      }
     ],
     "n": 2,
     "publisher_count": 2
    },
    {
     "contract_code": "both_teams_score|*|match|*|*#explicit",
     "source_group": "explicit",
     "market_label": "Both teams to score",
     "market_key": "both_teams_score",
     "choices": [
      {
       "code_name": "no",
       "in_words": "no",
       "tips": [
        {
         "entry_id": "n-5165944dfa32585331ceee11",
         "author_name": "Byron David",
         "author_href": "/authors/byron-david/",
         "source_group": "experts",
         "trust_tier": "tracked",
         "market_label": "Both teams to score",
         "market_key": "both_teams_score",
         "choice": "no",
         "choice_key": "no",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-06T12:24:17.439Z",
         "posted_at": "2026-11-06T12:10:32.000Z",
         "author_quoted_price": "1.95",
         "our_snapshot": "2.0000",
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/authors/byron-david/picks/6/#pick-n-5165944dfa32585331ceee11",
         "original": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 5,
          "won": 0,
          "void": 0,
          "return_percent": "-100.0",
          "period_from": "2026-10-10",
          "period_to": "2026-10-31",
          "portion": "live",
          "market_label": "Both teams to score"
         },
         "prematch_tally": null,
         "source_type": "media",
         "entry_record": {
          "scope": "all",
          "competition": null,
          "market_key": null,
          "portion": "live",
          "n": 24,
          "won": 12,
          "lost": 12,
          "void": 0,
          "net_points_hundredths": 47339,
          "return_percent": "19.7",
          "avg_odds": "2.09",
          "odds_from_author": 24,
          "odds_from_snapshot": 0,
          "league_market_n": 0,
          "market_n": 5,
          "small_sample": true,
          "period_from": "2026-10-04",
          "period_to": "2026-10-31",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        }
       ],
       "figure": 1
      }
     ],
     "n": 1,
     "publisher_count": 1
    },
    {
     "contract_code": "correct_score_market|*|match|*|*#explicit",
     "source_group": "explicit",
     "market_label": "Correct score",
     "market_key": "correct_score_market",
     "choices": [
      {
       "code_name": "1-0",
       "in_words": "Le Havre 1-0 Lorient",
       "tips": [
        {
         "entry_id": "n-e7126c08288f36f38bc93a08",
         "author_name": "Joel Lefevre",
         "author_href": "/authors/joel-lefevre/",
         "source_group": "experts",
         "trust_tier": "tracked",
         "market_label": "Correct score",
         "market_key": "correct_score_market",
         "choice": "Le Havre 1-0 Lorient",
         "choice_key": "1-0",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-06T03:10:10.497Z",
         "posted_at": "2026-11-06T00:01:24.000Z",
         "author_quoted_price": null,
         "our_snapshot": null,
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/authors/joel-lefevre/picks/5/#pick-n-e7126c08288f36f38bc93a08",
         "original": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 1,
          "won": 0,
          "void": 0,
          "return_percent": "-100.0",
          "period_from": "2026-11-01",
          "period_to": "2026-11-01",
          "portion": "live",
          "market_label": "Correct score"
         },
         "prematch_tally": null,
         "source_type": "media",
         "entry_record": {
          "scope": "all",
          "competition": null,
          "market_key": null,
          "portion": "live",
          "n": 1,
          "won": 0,
          "lost": 1,
          "void": 0,
          "net_points_hundredths": -10000,
          "return_percent": "-100.0",
          "avg_odds": "10.00",
          "odds_from_author": 0,
          "odds_from_snapshot": 1,
          "league_market_n": 1,
          "market_n": 1,
          "small_sample": true,
          "period_from": "2026-11-01",
          "period_to": "2026-11-01",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        }
       ],
       "figure": 1
      }
     ],
     "n": 1,
     "publisher_count": 1
    },
    {
     "contract_code": "double_chance|*|match|*|*#explicit",
     "source_group": "explicit",
     "market_label": "Double chance",
     "market_key": "double_chance",
     "choices": [
      {
       "code_name": "X2",
       "in_words": "draw or Lorient",
       "tips": [
        {
         "entry_id": "n-fe1025ec53f756a40c1790e3",
         "author_name": "Byron David",
         "author_href": "/authors/byron-david/",
         "source_group": "experts",
         "trust_tier": "tracked",
         "market_label": "Double chance",
         "market_key": "double_chance",
         "choice": "draw or Lorient",
         "choice_key": "X2",
         "byline": "Recorded by us before kick-off",
         "logged_at": "2026-11-06T12:24:17.439Z",
         "posted_at": "2026-11-06T12:10:32.000Z",
         "author_quoted_price": "1.36",
         "our_snapshot": "1.4200",
         "closing_line": null,
         "outcome_label": "Pending",
         "pre_match": true,
         "outcome_pending_reason": null,
         "proof": "/authors/byron-david/picks/6/#pick-n-fe1025ec53f756a40c1790e3",
         "original": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
         "contradictory": false,
         "authorship": null,
         "chips": [],
         "tracker": null,
         "tally": {
          "settled_picks": 2,
          "won": 1,
          "void": 0,
          "return_percent": "162.5",
          "period_from": "2026-10-10",
          "period_to": "2026-10-14",
          "portion": "live",
          "market_label": "Double chance"
         },
         "prematch_tally": null,
         "source_type": "media",
         "entry_record": {
          "scope": "all",
          "competition": null,
          "market_key": null,
          "portion": "live",
          "n": 24,
          "won": 12,
          "lost": 12,
          "void": 0,
          "net_points_hundredths": 47339,
          "return_percent": "19.7",
          "avg_odds": "2.09",
          "odds_from_author": 24,
          "odds_from_snapshot": 0,
          "league_market_n": 0,
          "market_n": 2,
          "small_sample": true,
          "period_from": "2026-10-04",
          "period_to": "2026-10-31",
          "as_of": "2026-11-08T16:15:00.000Z"
         },
         "repeats": 0,
         "publications": 1
        }
       ],
       "figure": 1
      }
     ],
     "n": 1,
     "publisher_count": 1
    }
   ],
   "newcomers": [
    {
     "entry_id": "n-e93fc5c833344cb5330ca953",
     "author_name": "FootballPredictions.com",
     "author_href": "/sources/footballpredictions-com/",
     "source_group": "websites",
     "trust_tier": "probation",
     "market_label": "1X2, match result",
     "market_key": "1x2",
     "choice": "Lorient",
     "choice_key": "2",
     "byline": "Recorded by us before kick-off",
     "logged_at": "2026-11-05T02:19:32.037Z",
     "posted_at": "2026-11-02T15:43:04.000Z",
     "author_quoted_price": null,
     "our_snapshot": null,
     "closing_line": null,
     "outcome_label": "Pending",
     "pre_match": true,
     "proof": "/sources/footballpredictions-com/picks/397/#pick-n-e93fc5c833344cb5330ca953",
     "original": null,
     "contradictory": false,
     "authorship": null,
     "source_type": "telegram_channels",
     "own_page": true,
     "trust_settled_count": 3753
    },
    {
     "entry_id": "n-90d60edf369e3402cfc9892d",
     "author_name": "Ivan",
     "author_href": "/authors/ivan/",
     "source_group": "tipsters",
     "trust_tier": "probation",
     "market_label": "1X2, match result",
     "market_key": "1x2",
     "choice": "Lorient",
     "choice_key": "2",
     "byline": "Recorded by us before kick-off",
     "logged_at": "2026-11-05T07:39:33.082Z",
     "posted_at": "2026-11-05T07:36:37.000Z",
     "author_quoted_price": null,
     "our_snapshot": "2.5000",
     "closing_line": null,
     "outcome_label": "Pending",
     "pre_match": true,
     "proof": "/authors/ivan/picks/4/#pick-n-90d60edf369e3402cfc9892d",
     "original": null,
     "contradictory": false,
     "authorship": null,
     "source_type": "private_authors",
     "own_page": true,
     "trust_settled_count": 40
    },
    {
     "entry_id": "n-c3ba72ead8b873b72b4d10ab",
     "author_name": "Aleksej Tarabrin",
     "author_href": "/authors/aleksej-tarabrin/",
     "source_group": "tipsters",
     "trust_tier": "probation",
     "market_label": "Team goals over/under 1.5",
     "market_key": "team_total",
     "choice": "Le Havre under 1.5",
     "choice_key": "1-under",
     "byline": "Recorded by us before kick-off",
     "logged_at": "2026-11-07T18:19:40.927Z",
     "posted_at": null,
     "author_quoted_price": "1.45",
     "our_snapshot": "1.4600",
     "closing_line": null,
     "outcome_label": "Pending",
     "pre_match": true,
     "proof": "/authors/aleksej-tarabrin/picks/2/#pick-n-c3ba72ead8b873b72b4d10ab",
     "original": null,
     "contradictory": false,
     "authorship": null,
     "source_type": "private_authors",
     "own_page": true,
     "trust_settled_count": 395
    },
    {
     "entry_id": "n-2ac557060e3b57025ddecab8",
     "author_name": "Ivan",
     "author_href": "/authors/ivan/",
     "source_group": "tipsters",
     "trust_tier": "probation",
     "market_label": "Double chance",
     "market_key": "double_chance",
     "choice": "draw or Lorient",
     "choice_key": "X2",
     "byline": "Recorded by us before kick-off",
     "logged_at": "2026-11-05T07:39:33.082Z",
     "posted_at": "2026-11-05T07:36:37.000Z",
     "author_quoted_price": null,
     "our_snapshot": "1.4304",
     "closing_line": null,
     "outcome_label": "Pending",
     "pre_match": true,
     "proof": "/authors/ivan/picks/4/#pick-n-2ac557060e3b57025ddecab8",
     "original": null,
     "contradictory": false,
     "authorship": null,
     "source_type": "private_authors",
     "own_page": true,
     "trust_settled_count": 40
    }
   ],
   "not_counted": [],
   "after_start": [],
   "forecaster_split": {
    "contracts": [
     {
      "contract_code": "1x2|*|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "1X2, match result",
      "market_key": "1x2",
      "choices": [
       {
        "code_name": "1",
        "in_words": "Le Havre",
        "tips": [
         {
          "author_name": "James Milton",
          "entry_id": "n-b0a8bd49500704ef143bc3aa",
          "outcome_label": "Pending",
          "source_group": "experts"
         }
        ],
        "figure": 1
       },
       {
        "code_name": "X",
        "in_words": "Draw",
        "tips": [],
        "figure": 0
       },
       {
        "code_name": "2",
        "in_words": "Lorient",
        "tips": [
         {
          "author_name": "FootballPredictions.com",
          "entry_id": "n-e93fc5c833344cb5330ca953",
          "outcome_label": "Pending",
          "source_group": "websites"
         },
         {
          "author_name": "Ivan",
          "entry_id": "n-90d60edf369e3402cfc9892d",
          "outcome_label": "Pending",
          "source_group": "tipsters"
         }
        ],
        "figure": 2
       }
      ],
      "n": 3,
      "publisher_count": 3
     },
     {
      "contract_code": "double_chance|*|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "Double chance",
      "market_key": "double_chance",
      "choices": [
       {
        "code_name": "X2",
        "in_words": "draw or Lorient",
        "tips": [
         {
          "author_name": "Byron David",
          "entry_id": "n-fe1025ec53f756a40c1790e3",
          "outcome_label": "Pending",
          "source_group": "experts"
         },
         {
          "author_name": "Ivan",
          "entry_id": "n-2ac557060e3b57025ddecab8",
          "outcome_label": "Pending",
          "source_group": "tipsters"
         }
        ],
        "figure": 2
       }
      ],
      "n": 2,
      "publisher_count": 2
     },
     {
      "contract_code": "total|2.5|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "Over/Under 2.5 goals",
      "market_key": "total",
      "choices": [
       {
        "code_name": "under",
        "in_words": "under 2.5",
        "tips": [
         {
          "author_name": "Byron David",
          "entry_id": "n-1df6cfe18a4f172133e33ad4",
          "outcome_label": "Pending",
          "source_group": "experts"
         },
         {
          "author_name": "Dailysports",
          "entry_id": "n-4c23cb82ba5d120a4ae257e5",
          "outcome_label": "Pending",
          "source_group": "websites"
         }
        ],
        "figure": 2
       }
      ],
      "n": 2,
      "publisher_count": 2
     },
     {
      "contract_code": "both_teams_score|*|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "Both teams to score",
      "market_key": "both_teams_score",
      "choices": [
       {
        "code_name": "no",
        "in_words": "no",
        "tips": [
         {
          "author_name": "Byron David",
          "entry_id": "n-5165944dfa32585331ceee11",
          "outcome_label": "Pending",
          "source_group": "experts"
         }
        ],
        "figure": 1
       }
      ],
      "n": 1,
      "publisher_count": 1
     },
     {
      "contract_code": "correct_score_market|*|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "Correct score",
      "market_key": "correct_score_market",
      "choices": [
       {
        "code_name": "1-0",
        "in_words": "Le Havre 1-0 Lorient",
        "tips": [
         {
          "author_name": "Joel Lefevre",
          "entry_id": "n-e7126c08288f36f38bc93a08",
          "outcome_label": "Pending",
          "source_group": "experts"
         }
        ],
        "figure": 1
       }
      ],
      "n": 1,
      "publisher_count": 1
     },
     {
      "contract_code": "team_total|1.5|match|*|*#explicit",
      "source_group": "explicit",
      "market_label": "Team goals over/under 1.5",
      "market_key": "team_total",
      "choices": [
       {
        "code_name": "1-under",
        "in_words": "Le Havre under 1.5",
        "tips": [
         {
          "author_name": "Aleksej Tarabrin",
          "entry_id": "n-c3ba72ead8b873b72b4d10ab",
          "outcome_label": "Pending",
          "source_group": "tipsters"
         }
        ],
        "figure": 1
       }
      ],
      "n": 1,
      "publisher_count": 1
     }
    ],
    "author_count": 7,
    "below_threshold": {
     "prediction_count": 0,
     "author_count": 0
    },
    "limit": 10
   },
   "chain": {
    "publications": 6,
    "unique": 6,
    "comparable": 6,
    "admissible": 6,
    "contributions": 6
   },
   "differing_choices": 0,
   "visible_who": 4,
   "newcomers_who": 3,
   "newcomers_before": 4,
   "titles_shown": true,
   "legend": "Badges show titles earned before this prediction, by published rules."
  },
  "arguments": {
   "topics": [
    {
     "code_name": "tactics",
     "display_name": "Tactics and style",
     "checkable_item": false,
     "bullet_points": [
      {
       "entry_id": "n-e7126c08288f36f38bc93a08",
       "author_name": "Joel Lefevre",
       "author_href": "/authors/joel-lefevre/",
       "source_group": "experts",
       "choice": "Le Havre 1-0 Lorient",
       "market_label": "Correct score",
       "logged_at": "2026-11-06T03:10:10.497Z",
       "original": "https://www.sportsmole.co.uk/football/le-havre/preview/le-havre-vs-lorient-prediction-team-news-lineups_608544.html",
       "proof": "/authors/joel-lefevre/picks/5/#pick-n-e7126c08288f36f38bc93a08",
       "quote_text": "Le Havre are unlikely to face many scoring threats from Lorient, and combined with their desire to impress their new interim manager, we believe the Normandy…",
       "retelling": null,
       "checkable_item": false,
       "against": false
      },
      {
       "entry_id": "n-5165944dfa32585331ceee11",
       "author_name": "Byron David",
       "author_href": "/authors/byron-david/",
       "source_group": "experts",
       "choice": "no",
       "market_label": "Both teams to score",
       "logged_at": "2026-11-06T12:24:17.439Z",
       "original": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
       "proof": "/authors/byron-david/picks/6/#pick-n-5165944dfa32585331ceee11",
       "quote_text": "With the hosts struggling to score goals",
       "retelling": null,
       "checkable_item": false,
       "against": false
      }
     ],
     "total_count": 3
    },
    {
     "code_name": "home_form",
     "display_name": "Home and away",
     "checkable_item": false,
     "bullet_points": [
      {
       "entry_id": "n-fe1025ec53f756a40c1790e3",
       "author_name": "Byron David",
       "author_href": "/authors/byron-david/",
       "source_group": "experts",
       "choice": "draw or Lorient",
       "market_label": "Double chance",
       "logged_at": "2026-11-06T12:24:17.439Z",
       "original": "https://footballwhispers.com/blog/le-havre-vs-lorient-prediction-08-11-26/",
       "proof": "/authors/byron-david/picks/6/#pick-n-fe1025ec53f756a40c1790e3",
       "quote_text": "However, the visitors have at least won one league match on the road this season, meaning there is a possibility that they could get over the line, making the…",
       "retelling": null,
       "checkable_item": false,
       "against": false
      }
     ],
     "total_count": 1
    }
   ],
   "against": [],
   "other_languages": 0,
   "other_language_hosts": [],
   "mode": "quotes",
   "topics_total": 2,
   "checkable": 0
  },
  "market_label": {
   "favourite_code": "2",
   "favourite": "Lorient",
   "probabilities": [
    {
     "outcome_label": "1",
     "in_words": "Le Havre",
     "percent_value": 33
    },
    {
     "outcome_label": "X",
     "in_words": "Draw",
     "percent_value": 28
    },
    {
     "outcome_label": "2",
     "in_words": "Lorient",
     "percent_value": 38
    }
   ],
   "prices": {
    "1": "2.81",
    "X": "3.30",
    "2": "2.46"
   },
   "group_count": 30,
   "bookmakers": 46,
   "snapshot_at": "2026-11-07T19:52:23.438Z",
   "closing_line": false,
   "first_at": "2026-10-29T00:12:19.060Z",
   "shift_pp": 1.5,
   "phrase": "The market has barely changed its mind since our first snapshot on 29 October 2026: Lorient 37% then, 38% now.",
   "technique": "Median across groups of bookmakers, without margin: brands on one platform count once (median within the group); betting exchanges and prediction markets are excluded. Market price from an odds aggregator; the data provider is not named.",
   "t24": {
    "snapshot_at": "2026-11-07T16:15:00.000Z",
    "probabilities": {
     "1": 33,
     "2": 38,
     "X": 28
    }
   }
  },
  "market_mode": "show",
  "fact_sheet": {
   "tournament": "Ligue 1 (France)",
   "matchday": "Matchweek 10",
   "starts_at": "2026-11-08T16:15:00.000Z",
   "form": {
    "home_side": [
     {
      "res": "L",
      "scoreline": "1-5",
      "opponent": "Paris Saint-Germain",
      "at_home": true,
      "data": "2026-10-30"
     },
     {
      "res": "L",
      "scoreline": "3-4",
      "opponent": "Olympique de Marseille",
      "at_home": false,
      "data": "2026-10-25"
     },
     {
      "res": "L",
      "scoreline": "1-3",
      "opponent": "Auxerre",
      "at_home": true,
      "data": "2026-10-18"
     },
     {
      "res": "L",
      "scoreline": "0-1",
      "opponent": "Lille",
      "at_home": false,
      "data": "2026-10-10"
     },
     {
      "res": "L",
      "scoreline": "2-3",
      "opponent": "Toulouse",
      "at_home": false,
      "data": "2026-09-19"
     }
    ],
    "away": [
     {
      "res": "L",
      "scoreline": "0-2",
      "opponent": "Stade Brestois",
      "at_home": true,
      "data": "2026-11-02"
     },
     {
      "res": "D",
      "scoreline": "0-0",
      "opponent": "Angers",
      "at_home": false,
      "data": "2026-10-25"
     },
     {
      "res": "W",
      "scoreline": "1-0",
      "opponent": "Monaco",
      "at_home": true,
      "data": "2026-10-18"
     },
     {
      "res": "W",
      "scoreline": "1-0",
      "opponent": "Paris FC",
      "at_home": true,
      "data": "2026-10-10"
     },
     {
      "res": "L",
      "scoreline": "1-2",
      "opponent": "Le Mans",
      "at_home": false,
      "data": "2026-09-19"
     }
    ]
   },
   "head_to_head": [],
   "past_cards": [],
   "reach": ""
  },
  "after_match": null,
  "prices": [],
  "revisions": [
   "2 new picks recorded in the last 24 hours.",
   "Market 24 hours before kick-off: Lorient 38%.",
   "First published with predictions on 5 November 2026."
  ],
  "titles": {
   "shown": true,
   "legend": "Badges show titles earned before this prediction, by published rules.",
   "frozen_in": null
  },
  "tracker": null,
  "source_groups": {
   "as_of": "2026-11-08T16:15:00.000Z",
   "groups": [
    {
     "key": "prediction_sites",
     "label": "Prediction sites"
    },
    {
     "key": "media",
     "label": "Media"
    },
    {
     "key": "telegram_channels",
     "label": "Telegram channels"
    },
    {
     "key": "private_authors",
     "label": "Independent tipsters"
    }
   ],
   "authors": 7,
   "by_group": [
    {
     "key": "prediction_sites",
     "authors": 0
    },
    {
     "key": "media",
     "authors": 3
    },
    {
     "key": "telegram_channels",
     "authors": 2
    },
    {
     "key": "private_authors",
     "authors": 2
    }
   ],
   "markets": [
    {
     "key": "1x2",
     "label": "Match result",
     "authors": 3,
     "by_group": [
      {
       "key": "prediction_sites",
       "authors": 0
      },
      {
       "key": "media",
       "authors": 1
      },
      {
       "key": "telegram_channels",
       "authors": 1
      },
      {
       "key": "private_authors",
       "authors": 1
      }
     ],
     "choices": [
      {
       "code_name": "1",
       "in_words": "Le Havre",
       "authors": 1,
       "by_group": [
        {
         "key": "prediction_sites",
         "authors": 0
        },
        {
         "key": "media",
         "authors": 1
        },
        {
         "key": "telegram_channels",
         "authors": 0
        },
        {
         "key": "private_authors",
         "authors": 0
        }
       ]
      },
      {
       "code_name": "X",
       "in_words": "Draw",
       "authors": 0,
       "by_group": [
        {
         "key": "prediction_sites",
         "authors": 0
        },
        {
         "key": "media",
         "authors": 0
        },
        {
         "key": "telegram_channels",
         "authors": 0
        },
        {
         "key": "private_authors",
         "authors": 0
        }
       ]
      },
      {
       "code_name": "2",
       "in_words": "Lorient",
       "authors": 2,
       "by_group": [
        {
         "key": "prediction_sites",
         "authors": 0
        },
        {
         "key": "media",
         "authors": 0
        },
        {
         "key": "telegram_channels",
         "authors": 1
        },
        {
         "key": "private_authors",
         "authors": 1
        }
       ]
      }
     ]
    },
    {
     "key": "totals",
     "label": "Goal totals",
     "authors": 3,
     "by_group": [
      {
       "key": "prediction_sites",
       "authors": 0
      },
      {
       "key": "media",
       "authors": 1
      },
      {
       "key": "telegram_channels",
       "authors": 1
      },
      {
       "key": "private_authors",
       "authors": 1
      }
     ]
    },
    {
     "key": "other",
     "label": "Handicaps, both teams to score, correct score and other markets",
     "authors": 3,
     "by_group": [
      {
       "key": "prediction_sites",
       "authors": 0
      },
      {
       "key": "media",
       "authors": 2
      },
      {
       "key": "telegram_channels",
       "authors": 0
      },
      {
       "key": "private_authors",
       "authors": 1
      }
     ]
    }
   ]
  },
  "market_line": {
   "line_state": "barely_moved",
   "line_frozen": false,
   "phrase": "Market line on 7 November 2026, 19:52 GMT: Le Havre 33%, draw 28%, Lorient 38%. Since 29 October 2026, 00:12 GMT it has barely moved: the largest change is 1.5 percentage points (Le Havre down).",
   "line_markets": [
    {
     "market_text": "1X2, match result",
     "market_group": "1x2",
     "line_kind": "median_line",
     "margin_included": false,
     "snapshot_at": "2026-11-07T19:52:23.438Z",
     "closing_line": false,
     "probabilities": [
      {
       "outcome_label": "1",
       "in_words": "Le Havre",
       "percent_value": 33
      },
      {
       "outcome_label": "X",
       "in_words": "Draw",
       "percent_value": 28
      },
      {
       "outcome_label": "2",
       "in_words": "Lorient",
       "percent_value": 38
      }
     ],
     "group_count": 30,
     "first_at": "2026-10-29T00:12:19.060Z",
     "first_probabilities": {
      "1": 35,
      "2": 37,
      "X": 28
     },
     "shift_pp": 1.5,
     "shift_outcome": "1",
     "shift_direction": "down",
     "line_state": "barely_moved",
     "phrase": "Market line on 7 November 2026, 19:52 GMT: Le Havre 33%, draw 28%, Lorient 38%. Since 29 October 2026, 00:12 GMT it has barely moved: the largest change is 1.5 percentage points (Le Havre down)."
    },
    {
     "market_text": "Both teams to score",
     "market_group": "other",
     "line_kind": "recorded_price",
     "margin_included": true,
     "closing_line": false,
     "price_sides": [
      {
       "choice": "no",
       "snapshot_price": "2.00",
       "percent_value": 50,
       "snapshot_at": "2026-11-06T12:24:09.391Z",
       "snapshot_count": 1,
       "first_snapshot_price": null,
       "first_at": null,
       "shift_pp": null,
       "shift_direction": null,
       "line_state": "single_snapshot"
      }
     ],
     "line_state": "single_snapshot",
     "phrase": "Both teams to score, no: market price 2.00 on 6 November 2026, 12:24 GMT (implied 50%, margin included)."
    },
    {
     "market_text": "Over/Under 2.5 goals",
     "market_group": "totals",
     "line_kind": "recorded_price",
     "margin_included": true,
     "closing_line": false,
     "price_sides": [
      {
       "choice": "under 2.5",
       "snapshot_price": "1.81",
       "percent_value": 55,
       "snapshot_at": "2026-11-07T10:48:49.395Z",
       "snapshot_count": 2,
       "first_snapshot_price": "1.82",
       "first_at": "2026-11-06T12:24:09.391Z",
       "shift_pp": 0.3,
       "shift_direction": "up",
       "line_state": "barely_moved"
      }
     ],
     "line_state": "barely_moved",
     "phrase": "Over/Under 2.5 goals, under 2.5 goals: market price 1.81 on 7 November 2026, 10:48 GMT (implied 55%, margin included), 0.3 percentage points up from 6 November 2026, 12:24 GMT."
    },
    {
     "market_text": "Team goals over/under 1.5",
     "market_group": "totals",
     "line_kind": "recorded_price",
     "margin_included": true,
     "closing_line": false,
     "price_sides": [
      {
       "choice": "Le Havre under 1.5",
       "snapshot_price": "1.46",
       "percent_value": 68,
       "snapshot_at": "2026-11-07T18:16:49.499Z",
       "snapshot_count": 1,
       "first_snapshot_price": null,
       "first_at": null,
       "shift_pp": null,
       "shift_direction": null,
       "line_state": "single_snapshot"
      }
     ],
     "line_state": "single_snapshot",
     "phrase": "Team goals over/under 1.5, Le Havre under 1.5 goals: market price 1.46 on 7 November 2026, 18:16 GMT (implied 68%, margin included)."
    }
   ]
  },
  "pre_kickoff_snapshot": {
   "frozen_before_kickoff": false,
   "as_of_moment": "2026-11-07T19:52:23.438Z",
   "starts_at": "2026-11-08T16:15:00.000Z",
   "phrase": "As of 7 November 2026, 19:52 GMT: market line Le Havre 33%, draw 28%, Lorient 38%; 1X2, match result, recorded picks before the match (3): 1 on Le Havre, 0 on the draw, 2 on Lorient; Over/Under 2.5 goals, recorded picks before the match (2): 2 on under 2.5 goals; Double chance, recorded picks before the match (2): 2 on draw or Lorient.",
   "market_line_brief": {
    "snapshot_at": "2026-11-07T19:52:23.438Z",
    "closing_line": false,
    "probabilities": {
     "1": 33,
     "X": 28,
     "2": 38
    }
   },
   "market_groups": [
    {
     "market_group": "1x2",
     "group_markets": [
      {
       "market_text": "1X2, match result",
       "prediction_count": 3,
       "row_count": 3,
       "market_choices": [
        {
         "choice": "Lorient",
         "figure": 2
        },
        {
         "choice": "Le Havre",
         "figure": 1
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 67,
       "phrase": "1X2, match result, recorded picks before the match (3): 1 on Le Havre, 0 on the draw, 2 on Lorient",
       "sides_1x2": [
        {
         "side": "1",
         "in_words": "Le Havre",
         "figure": 1
        },
        {
         "side": "X",
         "in_words": "draw",
         "figure": 0
        },
        {
         "side": "2",
         "in_words": "Lorient",
         "figure": 2
        }
       ]
      }
     ]
    },
    {
     "market_group": "totals",
     "group_markets": [
      {
       "market_text": "Over/Under 2.5 goals",
       "prediction_count": 2,
       "row_count": 2,
       "market_choices": [
        {
         "choice": "under 2.5",
         "figure": 2
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 100,
       "phrase": "Over/Under 2.5 goals, recorded picks before the match (2): 2 on under 2.5 goals"
      },
      {
       "market_text": "Team goals over/under 1.5",
       "prediction_count": 1,
       "row_count": 1,
       "market_choices": [
        {
         "choice": "Le Havre under 1.5",
         "figure": 1
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 100,
       "phrase": "Team goals over/under 1.5, recorded picks before the match (1): 1 on Le Havre under 1.5 goals"
      }
     ]
    },
    {
     "market_group": "other",
     "group_markets": [
      {
       "market_text": "Double chance",
       "prediction_count": 2,
       "row_count": 2,
       "market_choices": [
        {
         "choice": "draw or Lorient",
         "figure": 2
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 100,
       "phrase": "Double chance, recorded picks before the match (2): 2 on draw or Lorient"
      },
      {
       "market_text": "Both teams to score",
       "prediction_count": 1,
       "row_count": 1,
       "market_choices": [
        {
         "choice": "no",
         "figure": 1
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 100,
       "phrase": "Both teams to score, recorded picks before the match (1): 1 on no"
      },
      {
       "market_text": "Correct score",
       "prediction_count": 1,
       "row_count": 1,
       "market_choices": [
        {
         "choice": "Le Havre 1-0 Lorient",
         "figure": 1
        }
       ],
       "phrase_mode": "listing",
       "leader_choice": null,
       "leader_count": null,
       "share_percent": 100,
       "phrase": "Correct score, recorded picks before the match (1): 1 on Le Havre 1-0 Lorient"
      }
     ]
    }
   ],
   "predictions_before_kickoff": 10,
   "majority_threshold": {
    "min_predictions": 5,
    "min_share_percent": 60.0
   }
  },
  "teams_prev_next": [
   {
    "side": "home",
    "team": "Le Havre",
    "team_url": "/football/teams/le-havre/",
    "participant_id": "u-777d77453d89",
    "previous": {
     "kickoff": "2026-10-30T18:00:00.000Z",
     "name": "Le Havre vs Paris Saint-Germain",
     "url": "/football/matches/le-havre-vs-paris-saint-germain-2026-10-30/",
     "competition": "Ligue 1",
     "state": "played",
     "score": "1-5"
    },
    "next": null,
    "why": null
   },
   {
    "side": "away",
    "team": "Lorient",
    "team_url": "/football/teams/lorient/",
    "participant_id": "u-4e1f2851319e",
    "previous": {
     "kickoff": "2026-11-02T19:45:00.000Z",
     "name": "Lorient vs Stade Brestois",
     "url": "/football/matches/lorient-vs-stade-brestois-2026-11-02/",
     "competition": "Ligue 1",
     "state": "played",
     "score": "0-2"
    },
    "next": null,
    "why": null
   }
  ]
 },
 "number_sets": [
  {
   "set": "match.market_line.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1x2|1",
   "value": 33,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.market_line.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1x2|X",
   "value": 28,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.market_line.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1x2|2",
   "value": 38,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.recorded_price.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Both teams to score|no",
   "value": 50,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.recorded_price.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Over/Under 2.5 goals|under 2.5",
   "value": 55,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.recorded_price.percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Team goals over/under 1.5|Le Havre under 1.5",
   "value": 68,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1X2, match result",
   "value": 3,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1X2, match result",
   "value": 67,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1X2, match result|Le Havre",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1X2, match result|draw",
   "value": 0,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|1X2, match result|Lorient",
   "value": 2,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Over/Under 2.5 goals",
   "value": 2,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Over/Under 2.5 goals",
   "value": 100,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Over/Under 2.5 goals|under 2.5",
   "value": 2,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Team goals over/under 1.5",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Team goals over/under 1.5",
   "value": 100,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Team goals over/under 1.5|Le Havre under 1.5",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Double chance",
   "value": 2,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Double chance",
   "value": 100,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Double chance|draw or Lorient",
   "value": 2,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Both teams to score",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Both teams to score",
   "value": 100,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Both teams to score|no",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.market",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Correct score",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.leader_share_percent",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Correct score",
   "value": 100,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.before_kickoff.selection",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/|Correct score|Le Havre 1-0 Lorient",
   "value": 1,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  },
  {
   "set": "match.other_forecasters",
   "entity": "/football/matches/le-havre-vs-lorient-2026-11-08/",
   "value": 4,
   "where": null,
   "as_of": "2026-11-07T19:52:23.438Z"
  }
 ],
 "data_changes": {
  "records_corrected": 0,
  "last_correction_at": null,
  "corrections_url": "/corrections/"
 },
 "entity_id": "event:s-148050af9e63",
 "source_revision": 36
}
