{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "hindsight",
  "url": "https://tesign.com/en/item/hindsight/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/hindsight/",
      "json": "https://tesign.com/item/hindsight/index.json",
      "markdown": "https://tesign.com/item/hindsight/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/hindsight/",
      "json": "https://tesign.com/en/item/hindsight/index.json",
      "markdown": "https://tesign.com/en/item/hindsight/index.md"
    }
  },
  "name": "Hindsight",
  "use_label": "Narrative map for YouTube viewers",
  "one_liner": "Remembers 49,411 videos, maps 22,904 by issue, traces how a YouTuber's argument changed.",
  "text": {
    "why": "When a creator returns to an issue months later the examples and tone shift, but finding what they said before means hunting through hours of video. Hindsight keeps transcripts for 49,411 videos across 108 channels (per the live site) and lays 22,904 of them out as dots on an issue map (the Issue Galaxy). Click a cluster to inspect its videos in the Galaxy, open the transcript behind a claim from the story view, or ask the agent in the same workspace to compare three moments side by side.",
    "take": "It treats a whole channel as one memory instead of a list of videos, which suits anyone who has followed an argument for years.",
    "build": [
      "A dated timeline of how a channel you follow has treated one issue",
      "A research session: paste a YouTube link, let it build memory from the captions, then ask questions",
      "For creators, a Pre-flight check of a new draft against earlier claims in the channel's archive"
    ],
    "who": [
      {
        "role": "Regular viewer of news or tech channels",
        "situation": "checks how a favourite creator's stance shifted, in their own words"
      },
      {
        "role": "Journalist or researcher",
        "situation": "finds what a person actually said about one issue, and when"
      },
      {
        "role": "YouTube creator",
        "situation": "checks a new draft against earlier claims before publishing"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "Use it now: open https://dev.perspectivity.co/hindsight/ → type a topic, creator or YouTube link in the search box, or choose 'Follow a story'"
      },
      {
        "command": false,
        "text": "Run locally (requires Python 3.11+ and uv):"
      },
      {
        "command": true,
        "text": "git clone https://github.com/brishtiteveja/hindsight.git"
      },
      {
        "command": true,
        "text": "cd hindsight"
      },
      {
        "command": true,
        "text": "uv sync"
      },
      {
        "command": true,
        "text": "cp .env.example .env"
      },
      {
        "command": true,
        "text": "uv run hindsight ingest samples/demo-channel --channel \"Demo Channel\""
      },
      {
        "command": true,
        "text": "uv run hindsight analyze --channel \"Demo Channel\""
      },
      {
        "command": true,
        "text": "uv run hindsight index --channel \"Demo Channel\""
      },
      {
        "command": true,
        "text": "uv run hindsight serve"
      },
      {
        "command": false,
        "text": "→ open http://localhost:8300/"
      }
    ],
    "caveat": [
      "MIT for the code; third-party videos and transcripts are not relicensed by the repository",
      "The live site opens without keys, but a local install needs OpenRouter and Gemini API keys for analysis, indexing and the agent (caption ingestion and serving work without them)",
      "The agent layer is hackathon work (AI Tinkerers × OpenAI); the transcript corpus, engine and Galaxy are Perspectivity's earlier work. A prototype over the indexed archive; the full corpus is not in the repository.",
      "The README warns that topic and stance labels are model-generated aids and that speaker attribution and timestamps can be wrong — check the original recording"
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://dev.perspectivity.co/hindsight"
  },
  "ready": "browser",
  "categories": [
    "ai",
    "media"
  ],
  "categories_confirmed": true,
  "tags": [
    "youtube",
    "transcripts",
    "narrative-map",
    "topic-clusters",
    "agents"
  ],
  "platform": [
    "web",
    "cli"
  ],
  "license": {
    "spdx": "MIT",
    "scope": "permissive",
    "scope_text": "Use, change and redistribute, commercially too. Keep the notice.",
    "url": "https://spdx.org/licenses/MIT.html",
    "note": null,
    "open_source": true
  },
  "language": "JavaScript",
  "source_urls": {
    "canonical": "https://dev.perspectivity.co/hindsight",
    "github": "https://github.com/brishtiteveja/hindsight",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "showhn",
        "url": "https://github.com/brishtiteveja/hindsight",
        "posted_at": "2026-09-13T05:27:04.000Z",
        "hn_url": "https://news.ycombinator.com/item?id=49680318"
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 0,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:33:37.895Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": null,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": 1,
    "hn_points_observed_at": "2026-09-16T07:50:08.499Z",
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-13T05:57:23.000Z",
    "owner_type": "User",
    "open_issues": 0,
    "contributors": 1,
    "releases_count": 0,
    "latest_release": null,
    "checked_at": "2026-09-15T19:33:37.895Z",
    "core_checked_at": "2026-09-15T19:33:37.895Z"
  },
  "signals": [
    {
      "kind": "new",
      "label": "NEW",
      "value": "2h OLD WHEN SEEN"
    }
  ],
  "images": {
    "og": "https://tesign.com/img/hindsight-69a568861b.png",
    "cover": "https://tesign.com/img/hindsight-69a568861b.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/hindsight-69a568861b.png",
      "https://tesign.com/img/hindsight-b69dde5002.png",
      "https://tesign.com/img/hindsight-5be527f77f.png"
    ],
    "alt": "Hindsight landing page: thousands of video dots grouped into issue clusters, with a central search box for a topic, creator or YouTube link.",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T07:43:20.294Z",
    "source_created_at": "2026-09-13T05:27:04.000Z",
    "discovery_hours": 2.271192777777778,
    "launch_signal_at": "2026-09-13T05:27:04.000Z",
    "kept_at": "2026-09-15T14:07:35.259Z",
    "first_published_at": "2026-09-15T14:07:35.397Z",
    "updated_at": "2026-09-15T14:07:35.342Z",
    "ingestion_mode": "live"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "A summary, not legal advice."
  ]
}
