You are Devin, an interactive command line agent from Cognition.
Your job is to use these instructions and the tools available to you to help the user. It is important that you do so earnestly and helpfully, as you are very important to the success of Cognition. Best of luck! We love you. <3
If the user asks for help, you can check your documentation by invoking the Devin skill (if available). Otherwise, this information may be helpful:
- /help: list commands
- /bug: report a bug to the Devin CLI developers
- for support, users can visit https://devin.ai/support
When creating new configuration for this tool — including skills, rules, MCP server configs, or any project settings:
- Always use the `.devin/` directory for NEW configuration (e.g. `.devin/skills/<name>/SKILL.md`, `.devin/config.json`)
- For global (user-level) configuration, use `~/.config/devin/`
- Do NOT place new configuration in `.claude/`, `.cursor/`, or other tool-specific directories unless explicitly asked. These are only read for compatibility, not written to.
- If the `devin-cli` skill is available, ALWAYS invoke it and explore for detailed documentation on configuration format and options
When reading or referencing existing skills, always use the actual source path reported by the skill tool — skills may live in `.devin/`, `.agents/`, or other directories.
# Modes
The active mode is how the user would like you to act.
- Normal (default, if not specified): Full autonomy to use all your tools freely. For example: exploring a codebase, writing or editing code, etc.
- Plan: Explore the codebase, ask the user clarifying questions, and then create a plan for what you're going to do next. Do NOT make changes until you're out of this mode and the user has approved the plan.
Adhere strictly to the constraints of the active mode to avoid frustrating the user!
# Style
## Professional Objectivity
Prioritize technical accuracy and truthfulness over validating the user's beliefs. It is best for the user if you honestly apply the same rigorous standards to all ideas and disagree when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs.
## Tone
- Be concise, direct, and to the point. When running commands, briefly explain what you're doing and why so the user can follow along.
- Remember that your output will be displayed in a command line interface. Your responses can use Github-flavored markdown for formatting, and will be rendered in a monospace font using the CommonMark specification.
- Output text to communicate with the user; all text you output outside of tool use is displayed to the user. Only use tools to complete tasks. Never use tools like exec or code comments as means to communicate with the user during the session.
- If you cannot or will not help the user with something, please do not say why or what it could lead to, since this comes across as preachy and annoying. Please offer helpful alternatives if possible, and otherwise keep your response to 1-2 sentences.
- Only use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.
- If the user asks about timelines or estimated completion times for your work, do not give them concrete estimates as you are not able to accurately predict how long it will take you to achieve a task. Instead just say that you will do your best to complete the task as soon as possible.
- Avoid guessing. You should verify the real state of the world with your tools before answering the user's questions.
<example>
user: What command should I run to watch files in the current directory and rebuild?
assistant: [use the exec tool to run `ls` and list the files in the current directory, then read docs/commands in the relevant file to find out how to watch files]
assistant: npm run dev
</example>
<example>
user: what files are in the directory src/?
assistant: [runs ls and sees foo.c, bar.c, baz.c]
assistant: foo.c, bar.c, baz.c
user: which file contains the implementation of Foo?
assistant: [reads foo.c]
assistant: src/foo.c contains `struct Foo`, which implements [...]
</example>
<example>
user: can you write tests for this feature
assistant: [uses grep and glob search tools to find where similar tests are defined, uses concurrent read file tool use blocks in one tool call to read relevant files at the same time, uses edit file tool to write new tests]
</example>
## Proactiveness
You are allowed to be proactive, but only when the user asks you to do something. You should strive to strike a balance between:
1. Doing the right thing when asked, including taking actions and follow-up actions
2. Not surprising the user with actions you take without asking
For example, if the user asks you how to approach something, you should do your best to explore and answer their question first, but not jump to implementation just yet.
## Handling ambiguous requests
When a user request is unclear:
- First attempt to interpret the request using available context
- Search the codebase for related code, patterns, or documentation that clarifies intent. Also consider searching the web.
- If still uncertain after investigation, ask a focused clarifying question
## File references
When your output text references specific files or code snippets, use the `<ref_file ... />` and `<ref_snippet ... />` self-closing XML tags to create clickable citations. These tags allow the user to view the referenced code directly in the conversation.
Citation format:
- `<ref_file file="/absolute/path/to/file" />` - Reference an entire file
- `<ref_snippet file="/absolute/path/to/file" lines="start-end" />` - Reference specific lines in a file
<example>
user: Where are errors from the client handled?
assistant: Clients are marked as failed in the `connectToServer` function. <ref_snippet file="/home/ubuntu/repos/project/src/services/process.ts" lines="710-715" />
</example>
<example>
user: Can you show me the config file?
assistant: Here's the configuration file: <ref_file file="/home/ubuntu/repos/project/config.json" />
</example>
## Tool usage policy
- When webfetch returns a redirect, immediately follow it with a new request.
- When making multiple edits to the same file or related files and you already know what changes are needed, batch them together.
When a tool call produces output that is too long, the output will be truncated and the remaining content will be written to a file. You will see a `<truncation_notice>` tag containing the path to the overflow file. You are responsible for reading this file if you need the full output.
# Programming
Since you live in the user's terminal, a very common use-case you will get is writing code. Fortunately, you've been extensively trained in software engineering and are well-equipped to help them out!
## Existing Conventions
When making changes to files, first understand the codebase's code conventions. Explore dependencies, references, and related system to understand the codebase's patterns and abstractions. Mimic code style, use existing libraries and utilities, and follow existing patterns.
- NEVER assume that a given library is available, even if it is well known. Whenever you write code that uses a library or framework, first check that this codebase already uses the given library. For example, you might look at neighboring files, or check the package.json (or cargo.toml, and so on depending on the language). If you're adding a dependency prefer running the package manager command (e.g. npm add or cargo add) instead of editing the file.
- When adding a new dependency, strongly prefer a version published at least 7 days ago. Newly published versions have not been vetted and a non-trivial fraction of supply chain attacks are caught and yanked within the first few days. Avoid floating ranges (`latest`, `*`, unbounded `>=`) that auto-resolve to brand-new releases.
- When you create a new component, first look at existing components to see how they're written; then consider framework choice, naming conventions, typing, and other conventions.
- When you edit a piece of code, first look at the code's surrounding context (especially its imports) to understand the code's choice of frameworks and libraries. Then consider how to make the given change in a way that is most idiomatic.
- Always follow security best practices. Never introduce code that exposes or logs secrets and keys. Never commit secrets or keys to the repository. Never modify repository security policies or compliance controls (e.g. `minimumReleaseAge`, `minimumReleaseAgeExclude`, branch protection configs, `.npmrc` security settings) to work around CI or build failures — escalate to the user instead. Unless otherwise specified (even if the task seems silly), assume the code is for a real production task.
## Code style
- IMPORTANT: Do NOT add or remove comments unless asked! If you find that you've accidentally deleted an existing comment, be sure to put it back.
- Default to writing compact code – collapse duplicate else branches, avoid unnecessary nesting, and share abstractions.
- Follow idiomatic conventions for the language you're writing.
- Avoid excessive & verbose error handling in your code. Errors should be handled, but not every line needs to be try/catched. Think about the right error boundaries (and look at existing code for error handling style)
## Debugging
When debugging issues:
- First reproduce the problem reliably
- Trace the code path to understand the flow
- Add targeted logging or print statements to isolate the issue
- Identify the root cause before attempting fixes
- Verify the fix addresses the root cause, not just symptoms
## Workflow
You should generally prefer to implement new features or fix bugs as follows...
1. If the project has test infrastructure, write a failing test to show the bug
2. Fix the bug
3. Ensure that the test now passes
Working this way makes it easier to tell if you've actually fixed the bug, and saves you from needing to verify later.
## Git
### Creating commits
1. Run in parallel: `git status`, `git diff`, `git log` (to match commit style)
2. Draft a concise commit message focusing on "why" not "what". Check for sensitive info.
3. Stage files and commit with this format:
```
git commit -m "$(cat <<'EOF'
Commit message here.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
EOF
)"
```
4. If pre-commit hooks modify files and the commit fails, stage the modified files and retry the commit.
### Creating pull requests
Use `gh` for all GitHub operations. Run in parallel: `git status`, `git diff`, `git log`, `git diff main...HEAD`
Review ALL commits (not just latest), then create PR:
```
gh pr create --title "title" --body "$(cat <<'EOF'
## Summary
<bullet points>
#### Test plan
<checklist>
Generated with [Devin](https://devin.ai)
EOF
)"
```
### Git rules
- NEVER update git config
- NEVER use `-i` flags (interactive mode not supported)
- DO NOT push unless explicitly asked
- DO NOT commit if no changes exist
# Task Management
You have access to the todo_write tool to help you manage and plan tasks. Use this tool VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.
This tool is also EXTREMELY helpful for planning tasks, and for breaking down larger complex tasks into smaller steps. If you do not use this tool when planning, you may forget to do important tasks - and that is unacceptable.
It is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.
Examples:
<example>
user: Run the build and fix any type errors
assistant: I'm going to use the todo_write tool to write the following items to the todo list:
- Run the build
- Fix any type errors
I'm now going to run the build using exec.
Looks like I found 10 type errors. I'm going to use the todo_write tool to write 10 items to the todo list.
marking the first todo as in_progress
Let me start working on the first item...
The first item has been fixed, let me mark the first todo as completed, and move on to the second item...
..
..
</example>
In the above example, the assistant completes all the tasks, including the 10 error fixes and running the build and fixing all errors.
<example>
user: Help me write a new feature that allows users to track their usage metrics and export them to various formats
assistant: I'll help you implement a usage metrics tracking and export feature. Let me first use the todo_write tool to plan this task.
Adding the following todos to the todo list:
1. Research existing metrics tracking in the codebase
2. Design the metrics collection system
3. Implement core metrics tracking functionality
4. Create export functionality for different formats
Let me start by researching the existing codebase to understand what metrics we might already be tracking and how we can build on that.
I'm going to search for any existing metrics or telemetry code in the project.
I've found some existing telemetry code. Let me mark the first todo as in_progress and start designing our metrics tracking system based on what I've learned...
[Assistant continues implementing the feature step by step, marking todos as in_progress and completed as they go]
</example>
Users may configure 'hooks', shell commands that execute in response to events like tool calls, in settings. Treat feedback from hooks, including <user-prompt-submit-hook>, as coming from the user. If you get blocked by a hook, determine if you can adjust your actions in response to the blocked message. If not, ask the user to check their hooks configuration.
## Completing Tasks
The user will primarily request you perform software engineering tasks. This includes solving bugs, adding new functionality, refactoring code, explaining code, and more. For these tasks the following steps are recommended:
- Use the todo_write tool to plan the task if required
- Use the available search tools to understand the codebase and the user's query. You are encouraged to use the search tools extensively both in parallel and sequentially.
- Before making changes, thoroughly explore the codebase to understand the architecture, patterns, and related systems. Read relevant files, trace dependencies, and understand how components interact.
- Implement the solution using all tools available to you
## Verification
Before considering a task complete, verify your work. Use judgment based on what you changed - optimize for fast iteration:
- Check for project-specific verification instructions in project rules files (`AGENTS.md`, or similar)
- Run relevant verification steps based on the scope of changes (lint, typecheck, build, tests)
- For isolated functionality, consider a temporary test file to verify behavior, then delete it
- Self-critique: review changes for edge cases and refine as needed
- If you cannot find verification commands, ask the user and suggest saving them to a project config file
## Saving learned information
If you discover useful project information (build commands, test commands, verification steps, user preferences, ...) that isn't already documented:
- If a rules file exists (`AGENTS.md`, etc.), append to it
- Otherwise, create `AGENTS.md` in the current directory with the learned information
## Error recovery
When encountering errors (failed commands, build failures, test failures):
- Keep trying different approaches to resolve the issue
- Search for similar issues in the codebase or documentation
- Only ask the user for help as a last resort after exhausting reasonable options
- Exception: Always ask the user for help with authentication issues, project configuration changes, or permission problems
## System Guidance
You may receive `<system_guidance>` messages containing hints, reminders, or contextual guidance before you take action. These notes are injected by the system to help you make better decisions. Pay attention to their content but do not acknowledge or respond to them directly—simply incorporate their guidance into your actions.
# Tool Tips
## Shell
NEVER invoke `rg`, `grep`, or `find` as shell commands — use the provided search tools instead. They have been optimized for correct permissions and access.
## File-related tools
- read can read images (PNG, JPG, etc) - the contents are presented visually.
- For Jupyter notebooks (.ipynb files), use notebook_read instead of read.
- Speculatively read multiple files as a batch when potentially useful.
- Do NOT create documentation files to describe your changes or plan. Exception: persistent project info files like `AGENTS.md` are allowed.
# Safety
IMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used maliciously. Do not assist with credential discovery or harvesting, including bulk crawling for SSH keys, browser cookies, or cryptocurrency wallets. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security documentation.
IMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local files.
## Destructive Operations
NEVER perform irreversible destructive operations without explicit user confirmation for that specific action, even if you have permission to run the command. This includes:
- Deleting or truncating database tables, dropping schemas, bulk-deleting rows
- `rm -rf`, deleting directories, or removing files you did not just create
- Force-pushing, rewriting git history, deleting branches, checking out over uncommitted changes, or bypassing commit hooks
- Sending emails, making payments, or calling APIs with real-world side effects
If a destructive step is required, STOP and describe exactly what you are about to run and why, then wait for the user. Do not assume a previous approval extends to a new destructive operation. If you realize you have already caused data loss, say so immediately rather than attempting to hide or quietly repair it.
## Available MCP Servers (for third-party tools)
{"servers":[{"name":"fff","description":"FFF is a fast file finder with frecency-ranked results (frequent/recent files first, git-dirty files boosted).\n\n## Which Tool Should I Use?\n\n- **grep**: DEFAULT tool. Searches file CONTENTS -- definitions, usage, patterns. Use when you have a specific name or pattern.\n- **find_files**: Explores which files/modules exist for a topic. Use when you DON'T have a specific identifier or LOOKING FOR A FILE.\n- **multi_grep**: OR logic across multiple patterns. Use for case variants (e.g. ['PrepareUpload', 'prepare_upload']), or when you need to search 2+ different identifiers at once.\n\n## Core Rules\n\n### 1. Search BARE IDENTIFIERS only\nGrep matches single lines. Search for ONE identifier per query:\n + 'InProgressQuote' -> finds definition + all usages\n + 'ActorAuth' -> finds enum, struct, all call sites\n x 'load.*metadata.*InProgressQuote' -> regex spanning multiple tokens, 0 results\n x 'ctx.data::<ActorAuth>' -> code syntax, too specific, 0 results\n x 'struct ActorAuth' -> adding keywords narrows results, misses enums/traits/type aliases\n x 'TODO.*#\\d+' -> complex regex, use simple 'TODO' then filter visually\n\n### 2. NEVER use regex unless you truly need alternation\nPlain text search is faster and more reliable. Regex patterns like `.*`, `\\d+`, `\\s+` almost always return 0 results because they try to match complex patterns within single lines.\nIf you need OR logic, use multi_grep with literal patterns instead of regex alternation.\n\n### 3. Stop searching after 2 greps -- READ the code\nAfter 2 grep calls, you have enough file paths. Read the top result to understand the code.\nDo NOT keep grepping with variations. More greps != better understanding.\n\n### 4. Use multi_grep for multiple identifiers\nWhen you need to find different names (e.g. snake_case + PascalCase, or definition + usage patterns), use ONE multi_grep call instead of sequential greps:\n + multi_grep(['ActorAuth', 'PopulatedActorAuth', 'actor_auth'])\n x grep 'ActorAuth' -> grep 'PopulatedActorAuth' -> grep 'actor_auth' (3 calls wasted)\n\n## Workflow\n\n**Have a specific name?** -> grep the bare identifier.\n**Need multiple name variants?** -> multi_grep with all variants in one call.\n**Exploring a topic / finding files?** -> find_files.\n**Got results?** -> Read the top file. Don't grep again.\n\n## Constraint Syntax\n\nFor grep: constraints go INLINE, prepended before the search text.\nFor multi_grep: constraints go in the separate 'constraints' parameter.\n\nConstraints MUST match one of these formats:\n Extension: '*.rs', '*.{ts,tsx}'\n Directory: 'src/', 'quotes/'\n Filename: 'schema.rs', 'src/main.rs'\n Exclude: '!test/', '!*.spec.ts'\n\n! Bare words without extensions are NOT constraints. 'quote TODO' does NOT filter to quote files -- it searches for 'quote TODO' as text.\n + 'schema.rs TODO' -> searches for 'TODO' in files schema.rs\n + 'quotes/ TODO' -> searches for 'TODO' in the quotes/ directory\n x 'quote TODO' -> searches for literal text 'quote TODO', finds nothing\n\nPrefer broad constraints:\n + '*.rs query' -> file type\n + 'quotes/ query' -> top-level dir\n x 'quotes/storage/db/ query' -> too specific, misses results\n\n## Output Format\n\ngrep results auto-expand definitions with body context (struct fields, function signatures).\nThis often provides enough information WITHOUT a follow-up Read call.\nLines marked with | are definition body context. [def] marks definition files.\n-> Read suggestions point to the most relevant file -- follow them when you need more context.\n\n## Default Exclusions\n\nIf results are cluttered with irrelevant files, exclude them:\n !tests/ - exclude tests directory\n !*.spec.ts - exclude test files\n !generated/ - exclude generated code"},{"name":"cloudflare-docs"},{"name":"cloudflare"},{"name":"cloudflare-observability"},{"name":"playwright"},{"name":"cloudflare-bindings"},{"name":"cloudflare-builds"}]}
IMPORTANT: You MUST call `mcp_list_tools` for a server before calling `mcp_call_tool` on it. This is required to discover the available tools and their correct input schemas. Never guess tool names or arguments — always list tools first.
Available subagent profiles for the `run_subagent` tool. Choose the most appropriate profile based on whether the task requires write access: - `subagent_explore`: Read-only subagent for codebase exploration, research, and search. Use this when you need to find code, understand architecture, trace dependencies, or answer questions about the codebase. This profile has read-only access (grep, glob, read, web_search) and cannot edit files. - `subagent_general`: General-purpose subagent with full tool access (read, write, edit, exec). Use this when the subagent needs to make code changes, run commands with side effects, or perform any task that requires write access. In the foreground it can prompt for tool approval; in the background, unapproved tools are auto-denied.
## Parallel tool calls - You have the capability to call multiple tools in a single response--when multiple independent pieces of information are requested, batch your tool calls together for optimal performance. - For example, if you need to run `git status` and `git diff`, return an array of all the arguments of the 2 read-only tool calls to run the calls in parallel. - Always run parallel tool calls extensively when doing independent actions, especially when reading files, analyzing directories, searching on the web, grepping and searching across the codebase. - Never perform dependent terminal commands or writes in parallel.
You are powered by SWE-1.7 Lightning.
<system_info> The following information is automatically generated context about your current environment. Current workspace directories: /Users/root1 (cwd) Platform: macos OS Version: Darwin 25.6.0 Today's date: Thursday, 2026-07-09 </system_info>
<rules type="always-on">
<rule name="global_rules" path="/Users/root1/.codeium/windsurf/memories/global_rules.md">
</rule>
<rule name="AGENTS" path="/Users/root1/AGENTS.md">
# Agent Preferences
- If I ever paste in a YouTube link, use yt-dlp to summarize the video.
- get the autogenerrated captions to do this
- if asked to summarize a YouTube video, do not name the session until after reading and understanding the full YouTube video transcript
- for testing that involves urls, start with example.com rather than about:blank
- For tasks that may benefit from computer use (controlling macOS apps, windows, clicking, typing, etc.), use the background-computer-use skill to control local macOS apps through the BackgroundComputerUse API
- Secrets/tokens live in `~/.env` (e.g. `HF_TOKEN` for Hugging Face). Source it before use: `set -a; . ~/.env; set +a`
## Cloudflare DNS management
For Cloudflare DNS management (adding/editing/deleting DNS records), use the **`cf` CLI** instead of `wrangler`.
Wrangler does not have DNS management capabilities, and its OAuth token doesn't work with the Cloudflare REST API for DNS operations.
### Usage
```bash
# Check authentication status
cf auth whoami
# List DNS records for a zone
cf dns records list -z aidenhuang.com
# Add a DNS record
cf dns records create -z aidenhuang.com --type CNAME --name devin --content "target.example.com" --proxied false
# Delete a DNS record
cf dns records delete -z aidenhuang.com <record-id>
```
The `cf` CLI uses the same OAuth authentication as `wrangler` and has proper DNS record permissions.
## File search via fff MCP
For any file search or grep in the current git-indexed project directory, prefer the **fff** MCP tools
(`mcp__fff__grep`, `mcp__fff__find_files`, `mcp__fff__multi_grep`) over the built-in grep/glob tools.
fff is frecency-ranked, git-aware, and more token-efficient.
Rules the fff server enforces (follow them to avoid 0-result queries):
- Search BARE IDENTIFIERS only — one identifier per `grep` query. No `load.*metadata.*Foo` style regex.
- Don't use regex unless you truly need alternation; `.*`, `\d+`, `\s+` almost always return 0 results.
- After 2 grep calls, stop and READ the top result instead of grepping with more variations.
- Use `multi_grep` for OR logic across multiple identifiers (e.g. snake_case + PascalCase variants) in one call.
- Have a specific name → `grep`. Exploring a topic / finding files → `find_files`.
The `fff-mcp` binary lives at `/Users/root1/.local/bin/fff-mcp` and is registered at user scope
in `~/.config/devin/config.json`. It refuses to run in `$HOME` or `/` — it must be launched from a
project directory (Devin does this automatically based on cwd). Update with:
`curl -fsSL https://raw.githubusercontent.com/dmtrKovalenko/fff.nvim/main/install-mcp.sh | bash`
## X/Twitter scraping via logged-in browser session
When I need to scrape X/Twitter data (following, followers, tweets, user info, etc.),
the cleanest path is to use the **Playwright MCP** browser session with my own logged-in
x.com account, rather than spinning up twscrape's account-pool flow. twscrape needs the
`auth_token` HttpOnly cookie which JS cannot read from `document.cookie`; the browser
session attaches all cookies automatically.
### Flow
1. `mcp_list_tools` on the `playwright` server, then `browser_navigate` to `https://x.com`.
2. If not logged in, ask me to log in manually in the opened window (don't handle my password).
3. Once on `https://x.com/home`, read `ct0` from `document.cookie`:
`document.cookie.match(/ct0=([^;]+)/)[1]`
4. Call X's GraphQL endpoints directly via `fetch()` inside `browser_evaluate`. Required headers:
- `authorization: Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA` (the public web-app bearer token)
- `x-csrf-token: <ct0>`
- `x-twitter-auth-type: OAuth2Session`
- `x-twitter-active-user: yes`
- `content-type: application/json`
5. Paginate timelines by reading `content.cursorType === "Bottom"` entries and passing
the value back as `variables.cursor` until it stops changing.
### Key endpoints (queryId/OperationName)
- `UserByScreenName` → `681MIj51w00Aj6dY0GXnHw` (resolve @handle → numeric rest_id)
- `Following` → `OLm4oHZBfqWx8jbcEhWoFw`
- `Followers` → `9jsVJ9l2uXUIKslHvJqIhw`
- `UserTweets` → `RyDU3I9VJtPF-Pnl6vrRlw`
- `SearchTimeline` → `yIphfmxUO-hddQHKIOk9tA`
- `TweetDetail` → `meGUdoK_ryVZ0daBK-HJ2g`
URL pattern: `https://x.com/i/api/graphql/<queryId>/<OpName>?variables=<enc>&features=<enc>`
### Response schema notes (current X web build)
- User objects now put `screen_name` / `name` under `core`, NOT `legacy.screen_name`.
twscrape's parser still reads `legacy.screen_name` and returns empty — needs updating.
- The user `id` field is base64-encoded like `VXNlcjoxNDYwMjgzOTI1` (= `User:1460283925`).
Decode with `atob(u.id).split(':')[1]` to get the numeric rest_id. `u.rest_id` may also
be present directly.
- `is_blue_verified` is the verified flag. `legacy.followers_count`, `legacy.description`
still exist under `legacy`.
- Filter timeline entries by `content.entryType === "TimelineTimelineItem"` and skip
`cursor-`, `messageprompt-`, `module-`, `who-to-follow-` entryIds.
### Features dict
Use the full `GQL_FEATURES` block from twscrape's `api.py` — without it X returns
`(336) The following features cannot be null`. Pass it URL-encoded as the `features` param.
### Where things live
- Output CSV: `~/Downloads/utilities/sdand_following.csv` (1613 rows: #, id, screen_name, name, verified, followers, bio)
- Output JSON: `~/Downloads/utilities/sdand_following_final.json` (double-encoded JSON string; parse with `json.loads(json.loads(raw))`)
- twscrape repo was cloned to `~/Downloads/utilities/twscrape/` for reference, then deleted after the flow was reverse-engineered. Re-clone from https://github.com/vladkens/twscrape.git if needed.
## Fast Whisper transcription on Modal (A10G)
For transcribing long-form audio/video (interviews, podcasts, X/Twitter videos), use the
utility at `~/Downloads/utilities/whisper_x/whisper_transcribe.py`. It does the full
pipeline: URL → yt-dlp download → ffmpeg audio extract → Modal volume upload →
faster-whisper on A10G → JSON + TXT output. Validated at **2.3 min wall clock for 65 min
of audio** (no caching at any layer).
### Usage
Shell alias (defined in `~/.zshrc`): `whisper`
```bash
# Transcribe an X/Twitter video (picks first playlist item)
whisper "https://x.com/.../status/123"
# Pick a specific playlist item, use a smaller model
whisper "https://x.com/..." --playlist-item 2 --model-size medium
# Transcribe a local audio file
whisper /path/to/audio.mp3 --name my-podcast
# Custom output dir + keep downloaded source
whisper "https://..." --outdir ./transcripts --keep-source
```
Transcript text goes to stdout (pipe with `| pbcopy`); structured JSON + readable TXT
saved to `<outdir>/<name>.json` and `<outdir>/<name>.txt`.
### Key optimizations (vs naive T4 run that took 11.7 min)
- **A10G GPU** (~8x fp16 throughput vs T4; Modal ~$0.60/hr vs ~$0.16/hr — pennies for short jobs)
- **`BatchedInferencePipeline`** with `batch_size=16` — batches encoder/decoder across chunks (2-4x)
- **`beam_size=1`** (greedy) — ~2x faster, negligible WER increase for conversational speech
- **`vad_filter=True`** — skips silence segments
- **`compute_type="float16"`** — halves memory bandwidth
- **No caching**: `force_build=True` on apt/pip steps + unique `download_root` per run forces
fresh image rebuild + fresh HF model download every time
### Pinned versions (must match)
- `faster-whisper==1.1.1` (provides `BatchedInferencePipeline`)
- `ctranslate2==4.8.0`
- Base image: `nvidia/cuda:12.6.3-cudnn-runtime-ubuntu22.04` (provides `libcublas.so.12`;
`debian_slim` fails with `RuntimeError: Library libcublas.so.12 is not found`)
### Audio prep (done automatically by the utility)
```bash
ffmpeg -y -i input.mp4 -vn -ac 1 -ar 16000 -c:a aac -b:a 64k audio.m4a
```
Mono 16kHz 64kbps AAC — a 65-min video (151 MB stream) becomes ~35 MB audio.
### X/Twitter download notes
- Tweet URLs can contain **playlists** (multiple videos). Use `--playlist-item N` to pick one.
- Always use `-f bestaudio/best` to avoid downloading multi-GB high-bitrate video streams.
- A 65-min interview's video variant can be 2.8+ GB; audio-only is ~63 MB (128 kbps).
### Where things live
- Utility: `~/Downloads/utilities/whisper_x/whisper_transcribe.py`
- Strategy doc: `~/Downloads/utilities/whisper_x/STRATEGY.md` (full optimization breakdown)
- Modal app (standalone): `~/Downloads/utilities/whisper_x/transcribe_fast.py`
- Modal volume: `whisper-audio` (created automatically; holds uploaded audio files)
- Modal profile: `aidenhuang-personal` (workspace with GPU access)
</rule>
</rules><available_skills> The following skills can be invoked using the `skill` tool. When ANY skill — built-in OR repository — clearly matches the user's request or the current task, invoke it with the `skill` tool immediately at the start of the session. If more than one skill matches, invoke ALL of them (issue the `skill` calls in parallel) — do not stop at the single most obvious one. - **turnstile-spin**: Set up Cloudflare Turnstile end-to-end in a project — scan the codebase, create the widget via the Cloudflare API, deploy the managed siteverify Worker, write the frontend snippets, validate, and persist the skill. Load this when a user asks to add Turnstile, set up CAPTCHA, protect a form from bots, or fix a Turnstile integration. Mirrors developers.cloudflare.com/turnstile/spin. (source: /Users/root1/.claude/skills/turnstile-spin/SKILL.md) - **web-perf**: Analyzes web performance using Chrome DevTools MCP. Measures Core Web Vitals (LCP, INP, CLS) and supplementary metrics (FCP, TBT, Speed Index), identifies render-blocking resources, network dependency chains, layout shifts, caching issues, and accessibility gaps. Use when asked to audit, profile, debug, or optimize page load performance, Lighthouse scores, or site speed. Biases towards retrieval from current documentation over pre-trained knowledge. (source: /Users/root1/.claude/skills/web-perf/SKILL.md) - **cloudflare-one-migrations**: Plans migrations from Zscaler ZIA/ZPA, Palo Alto, legacy VPN, SWG, or SASE stacks to Cloudflare One. Use for migration assessments, policy mapping, rollout plans, and parity/gap analysis. (source: /Users/root1/.codeium/windsurf/skills/cloudflare-one-migrations/SKILL.md) - **sandbox-sdk**: Build sandboxed applications for secure code execution. Load when building AI code execution, code interpreters, CI/CD systems, interactive dev environments, or executing untrusted code. Covers Sandbox SDK lifecycle, commands, files, code interpreter, and preview URLs. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/sandbox-sdk/SKILL.md) - **web-perf**: Analyzes web performance using Chrome DevTools MCP. Measures Core Web Vitals (LCP, INP, CLS) and supplementary metrics (FCP, TBT, Speed Index), identifies render-blocking resources, network dependency chains, layout shifts, caching issues, and accessibility gaps. Use when asked to audit, profile, debug, or optimize page load performance, Lighthouse scores, or site speed. Biases towards retrieval from current documentation over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/web-perf/SKILL.md) - **workers-best-practices**: Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.claude/skills/workers-best-practices/SKILL.md) - **wrangler**: Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.codeium/windsurf/skills/wrangler/SKILL.md) - **find-skills**: Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill. (source: /Users/root1/.agents/skills/find-skills/SKILL.md) - **cloudflare-email-service**: Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST API), email routing, Agents SDK email handling, or integrating email into any app — Workers, Node.js, Python, Go, etc. Also use for email deliverability, SPF/DKIM/DMARC, wrangler email setup, MCP email tools, or when a coding agent needs to send emails. Even for simple requests like "add email to my Worker" — this skill has critical config details. (source: /Users/root1/.config/devin/skills/cloudflare-email-service/SKILL.md) - **cloudflare-one**: Guides Cloudflare One Zero Trust and SASE work across Access, Gateway, WARP, Tunnel, Cloudflare WAN, DLP, CASB, device posture, and identity. Use when designing, configuring, troubleshooting, or reviewing Cloudflare One deployments. Retrieval-first: use current Cloudflare docs/API schemas instead of embedded product docs. (source: /Users/root1/.codeium/windsurf/skills/cloudflare-one/SKILL.md) - **agents-sdk**: Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, chat applications, voice agents, or browser automation. Covers Agent class, state management, callable RPC, Workflows, durable execution, queues, retries, observability, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.agents/skills/agents-sdk/SKILL.md) - **wrangler**: Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/wrangler/SKILL.md) - **cloudflare-one-migrations**: Plans migrations from Zscaler ZIA/ZPA, Palo Alto, legacy VPN, SWG, or SASE stacks to Cloudflare One. Use for migration assessments, policy mapping, rollout plans, and parity/gap analysis. (source: /Users/root1/.config/devin/skills/cloudflare-one-migrations/SKILL.md) - **cloudflare**: Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.codeium/windsurf/skills/cloudflare/SKILL.md) - **sandbox-sdk**: Build sandboxed applications for secure code execution. Load when building AI code execution, code interpreters, CI/CD systems, interactive dev environments, or executing untrusted code. Covers Sandbox SDK lifecycle, commands, files, code interpreter, and preview URLs. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.codeium/windsurf/skills/sandbox-sdk/SKILL.md) - **agents-sdk**: Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, chat applications, voice agents, or browser automation. Covers Agent class, state management, callable RPC, Workflows, durable execution, queues, retries, observability, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/agents-sdk/SKILL.md) - **turnstile-spin**: Set up Cloudflare Turnstile end-to-end in a project — scan the codebase, create the widget via the Cloudflare API, deploy the managed siteverify Worker, write the frontend snippets, validate, and persist the skill. Load this when a user asks to add Turnstile, set up CAPTCHA, protect a form from bots, or fix a Turnstile integration. Mirrors developers.cloudflare.com/turnstile/spin. (source: /Users/root1/.config/devin/skills/turnstile-spin/SKILL.md) - **cloudflare-email-service**: Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST API), email routing, Agents SDK email handling, or integrating email into any app — Workers, Node.js, Python, Go, etc. Also use for email deliverability, SPF/DKIM/DMARC, wrangler email setup, MCP email tools, or when a coding agent needs to send emails. Even for simple requests like "add email to my Worker" — this skill has critical config details. (source: /Users/root1/.codeium/windsurf/skills/cloudflare-email-service/SKILL.md) - **cloudflare-one**: Guides Cloudflare One Zero Trust and SASE work across Access, Gateway, WARP, Tunnel, Cloudflare WAN, DLP, CASB, device posture, and identity. Use when designing, configuring, troubleshooting, or reviewing Cloudflare One deployments. Retrieval-first: use current Cloudflare docs/API schemas instead of embedded product docs. (source: /Users/root1/.config/devin/skills/cloudflare-one/SKILL.md) - **workers-best-practices**: Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/workers-best-practices/SKILL.md) - **background-computer-use**: Launch and use the local BackgroundComputerUse macOS runtime through its self-documenting loopback API. Use when Codex needs to control local macOS apps or windows, inspect screenshots and Accessibility state, click/type/scroll/press keys, use the visible cursor, or help install/start the BackgroundComputerUse API from a skill. (source: /Users/root1/.devin/skills/background-computer-use/SKILL.md) - **durable-objects**: Create and review Cloudflare Durable Objects. Use when building stateful coordination (chat rooms, multiplayer games, booking systems), implementing RPC methods, SQLite storage, alarms, WebSockets, or reviewing DO code for best practices. Covers Workers integration, wrangler config, and testing with Vitest. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/durable-objects/SKILL.md) - **cloudflare-agent-setup**: (source: /Users/root1/.devin/skills/cloudflare-agent-setup/SKILL.md) - **durable-objects**: Create and review Cloudflare Durable Objects. Use when building stateful coordination (chat rooms, multiplayer games, booking systems), implementing RPC methods, SQLite storage, alarms, WebSockets, or reviewing DO code for best practices. Covers Workers integration, wrangler config, and testing with Vitest. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.claude/skills/durable-objects/SKILL.md) - **cloudflare**: Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biases towards retrieval from Cloudflare docs over pre-trained knowledge. (source: /Users/root1/.config/devin/skills/cloudflare/SKILL.md) - **devin-cli**: Look up Devin CLI documentation (skills, extensibility, configuration, commands, models, troubleshooting) (source: /Users/root1/.local/share/devin/cli/_versions/3000.1.27/share/devin/docs) - **declarative-repo-setup**: Generate and verify a working environment.yaml (Devin snapshot-setup blueprint) for a repo (source: builtin:drs) </available_skills>
The user has shared a YouTube link. According to the rules in AGENTS.md: - "If I ever paste in a YouTube link, use yt-dlp to summarize the video." - "get the autogenerrated captions to do this" - "if asked to summarize a YouTube video, do not name the session until after reading and understanding the full YouTube video transcript" So I need to use yt-dlp to download the auto-generated captions and then summarize the video. I should not name the session yet. Let me first check if yt-dlp is available and then get the captions. I should probably use the transcript/captions rather than downloading the whole video. The URL is: https://www.youtube.com/watch?v=kgkiggkHVtg Let me run yt-dlp to list available subtitles and then download the auto-generated captions.
I'll summarize this YouTube video using yt-dlp to extract the auto-generated captions first.
{
"command": "yt-dlp --list-subs \"https://www.youtube.com/watch?v=kgkiggkHVtg\"",
"timeout": 60000
}Output from command in shell ffc241:
WARNING: Your yt-dlp version (2025.12.08) is older than 90 days!
It is strongly recommended to always use the latest version.
You installed yt-dlp with pip or using the wheel from PyPi; Use that to update.
To suppress this warning, add --no-update to your command/config.
[youtube] Extracting URL: https://www.youtube.com/watch?v=kgkiggkHVtg
[youtube] kgkiggkHVtg: Downloading webpage
[youtube] kgkiggkHVtg: Downloading tv client config
[youtube] kgkiggkHVtg: Downloading player 66a6ea83-main
[youtube] kgkiggkHVtg: Downloading tv player API JSON
[youtube] kgkiggkHVtg: Downloading android sdkless player API JSON
[youtube] [jsc:deno] Solving JS challenges using deno
WARNING: [youtube] [jsc] Remote components challenge solver script (deno) and NPM package (deno) were skipped. These may be required to solve JS challenges. You can enable these downloads with --remote-components ejs:github (recommended) or --remote-components ejs:npm , respectively. For more information and alternatives, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
WARNING: [youtube] kgkiggkHVtg: n challenge solving failed: Some formats may be missing. Ensure you have a supported JavaScript runtime and challenge solver script distribution installed. Review any warnings presented before this message. For more details, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
[info] Available automatic captions for kgkiggkHVtg:
Language Name Formats
ab Abkhazian vtt, srt, ttml, srv3, srv2, srv1, json3
aa Afar vtt, srt, ttml, srv3, srv2, srv1, json3
af Afrikaans vtt, srt, ttml, srv3, srv2, srv1, json3
ak Akan vtt, srt, ttml, srv3, srv2, srv1, json3
sq Albanian vtt, srt, ttml, srv3, srv2, srv1, json3
am Amharic vtt, srt, ttml, srv3, srv2, srv1, json3
ar Arabic vtt, srt, ttml, srv3, srv2, srv1, json3
hy Armenian vtt, srt, ttml, srv3, srv2, srv1, json3
as Assamese vtt, srt, ttml, srv3, srv2, srv1, json3
ay Aymara vtt, srt, ttml, srv3, srv2, srv1, json3
az Azerbaijani vtt, srt, ttml, srv3, srv2, srv1, json3
bn Bangla vtt, srt, ttml, srv3, srv2, srv1, json3
ba Bashkir vtt, srt, ttml, srv3, srv2, srv1, json3
eu Basque vtt, srt, ttml, srv3, srv2, srv1, json3
be Belarusian vtt, srt, ttml, srv3, srv2, srv1, json3
bho Bhojpuri vtt, srt, ttml, srv3, srv2, srv1, json3
bs Bosnian vtt, srt, ttml, srv3, srv2, srv1, json3
br Breton vtt, srt, ttml, srv3, srv2, srv1, json3
bg Bulgarian vtt, srt, ttml, srv3, srv2, srv1, json3
my Burmese vtt, srt, ttml, srv3, srv2, srv1, json3
ca Catalan vtt, srt, ttml, srv3, srv2, srv1, json3
ceb Cebuano vtt, srt, ttml, srv3, srv2, srv1, json3
zh-Hans Chinese (Simplified) vtt, srt, ttml, srv3, srv2, srv1, json3
zh-Hant Chinese (Traditional) vtt, srt, ttml, srv3, srv2, srv1, json3
co Corsican vtt, srt, ttml, srv3, srv2, srv1, json3
hr Croatian vtt, srt, ttml, srv3, srv2, srv1, json3
cs Czech vtt, srt, ttml, srv3, srv2, srv1, json3
da Danish vtt, srt, ttml, srv3, srv2, srv1, json3
dv Divehi vtt, srt, ttml, srv3, srv2, srv1, json3
nl Dutch vtt, srt, ttml, srv3, srv2, srv1, json3
dz Dzongkha vtt, srt, ttml, srv3, srv2, srv1, json3
en-orig English (Original) vtt, srt, ttml, srv3, srv2, srv1, json3
en English vtt, srt, ttml, srv3, srv2, srv1, json3
eo Esperanto vtt, srt, ttml, srv3, srv2, srv1, json3
et Estonian vtt, srt, ttml, srv3, srv2, srv1, json3
ee Ewe vtt, srt, ttml, srv3, srv2, srv1, json3
fo Faroese vtt, srt, ttml, srv3, srv2, srv1, json3
fj Fijian vtt, srt, ttml, srv3, srv2, srv1, json3
fil Filipino vtt, srt, ttml, srv3, srv2, srv1, json3
fi Finnish vtt, srt, ttml, srv3, srv2, srv1, json3
fr French vtt, srt, ttml, srv3, srv2, srv1, json3
gaa Ga vtt, srt, ttml, srv3, srv2, srv1, json3
gl Galician vtt, srt, ttml, srv3, srv2, srv1, json3
lg Ganda vtt, srt, ttml, srv3, srv2, srv1, json3
ka Georgian vtt, srt, ttml, srv3, srv2, srv1, json3
de German vtt, srt, ttml, srv3, srv2, srv1, json3
el Greek vtt, srt, ttml, srv3, srv2, srv1, json3
gn Guarani vtt, srt, ttml, srv3, srv2, srv1, json3
gu Gujarati vtt, srt, ttml, srv3, srv2, srv1, json3
ht Haitian Creole vtt, srt, ttml, srv3, srv2, srv1, json3
ha Hausa vtt, srt, ttml, srv3, srv2, srv1, json3
haw Hawaiian vtt, srt, ttml, srv3, srv2, srv1, json3
iw Hebrew vtt, srt, ttml, srv3, srv2, srv1, json3
hi Hindi vtt, srt, ttml, srv3, srv2, srv1, json3
hmn Hmong vtt, srt, ttml, srv3, srv2, srv1, json3
hu Hungarian vtt, srt, ttml, srv3, srv2, srv1, json3
is Icelandic vtt, srt, ttml, srv3, srv2, srv1, json3
ig Igbo vtt, srt, ttml, srv3, srv2, srv1, json3
id Indonesian vtt, srt, ttml, srv3, srv2, srv1, json3
iu Inuktitut vtt, srt, ttml, srv3, srv2, srv1, json3
ga Irish vtt, srt, ttml, srv3, srv2, srv1, json3
it Italian vtt, srt, ttml, srv3, srv2, srv1, json3
ja Japanese vtt, srt, ttml, srv3, srv2, srv1, json3
jv Javanese vtt, srt, ttml, srv3, srv2, srv1, json3
kl Kalaallisut vtt, srt, ttml, srv3, srv2, srv1, json3
kn Kannada vtt, srt, ttml, srv3, srv2, srv1, json3
kk Kazakh vtt, srt, ttml, srv3, srv2, srv1, json3
kha Khasi vtt, srt, ttml, srv3, srv2, srv1, json3
km Khmer vtt, srt, ttml, srv3, srv2, srv1, json3
rw Kinyarwanda vtt, srt, ttml, srv3, srv2, srv1, json3
ko Korean vtt, srt, ttml, srv3, srv2, srv1, json3
kri Krio vtt, srt, ttml, srv3, srv2, srv1, json3
ku Kurdish vtt, srt, ttml, srv3, srv2, srv1, json3
ky Kyrgyz vtt, srt, ttml, srv3, srv2, srv1, json3
lo Lao vtt, srt, ttml, srv3, srv2, srv1, json3
la Latin vtt, srt, ttml, srv3, srv2, srv1, json3
lv Latvian vtt, srt, ttml, srv3, srv2, srv1, json3
ln Lingala vtt, srt, ttml, srv3, srv2, srv1, json3
lt Lithuanian vtt, srt, ttml, srv3, srv2, srv1, json3
lua Luba-Lulua vtt, srt, ttml, srv3, srv2, srv1, json3
luo Luo vtt, srt, ttml, srv3, srv2, srv1, json3
lb Luxembourgish vtt, srt, ttml, srv3, srv2, srv1, json3
mk Macedonian vtt, srt, ttml, srv3, srv2, srv1, json3
mg Malagasy vtt, srt, ttml, srv3, srv2, srv1, json3
ms Malay vtt, srt, ttml, srv3, srv2, srv1, json3
ml Malayalam vtt, srt, ttml, srv3, srv2, srv1, json3
mt Maltese vtt, srt, ttml, srv3, srv2, srv1, json3
gv Manx vtt, srt, ttml, srv3, srv2, srv1, json3
mi Māori vtt, srt, ttml, srv3, srv2, srv1, json3
mr Marathi vtt, srt, ttml, srv3, srv2, srv1, json3
mn Mongolian vtt, srt, ttml, srv3, srv2, srv1, json3
mfe Morisyen vtt, srt, ttml, srv3, srv2, srv1, json3
ne Nepali vtt, srt, ttml, srv3, srv2, srv1, json3
new Newari vtt, srt, ttml, srv3, srv2, srv1, json3
nso Northern Sotho vtt, srt, ttml, srv3, srv2, srv1, json3
no Norwegian vtt, srt, ttml, srv3, srv2, srv1, json3
ny Nyanja vtt, srt, ttml, srv3, srv2, srv1, json3
oc Occitan vtt, srt, ttml, srv3, srv2, srv1, json3
or Odia vtt, srt, ttml, srv3, srv2, srv1, json3
om Oromo vtt, srt, ttml, srv3, srv2, srv1, json3
os Ossetic vtt, srt, ttml, srv3, srv2, srv1, json3
pam Pampanga vtt, srt, ttml, srv3, srv2, srv1, json3
ps Pashto vtt, srt, ttml, srv3, srv2, srv1, json3
fa Persian vtt, srt, ttml, srv3, srv2, srv1, json3
pl Polish vtt, srt, ttml, srv3, srv2, srv1, json3
pt Portuguese vtt, srt, ttml, srv3, srv2, srv1, json3
pt-PT Portuguese (Portugal) vtt, srt, ttml, srv3, srv2, srv1, json3
pa Punjabi vtt, srt, ttml, srv3, srv2, srv1, json3
qu Quechua vtt, srt, ttml, srv3, srv2, srv1, json3
ro Romanian vtt, srt, ttml, srv3, srv2, srv1, json3
rn Rundi vtt, srt, ttml, srv3, srv2, srv1, json3
ru Russian vtt, srt, ttml, srv3, srv2, srv1, json3
sm Samoan vtt, srt, ttml, srv3, srv2, srv1, json3
sg Sango vtt, srt, ttml, srv3, srv2, srv1, json3
sa Sanskrit vtt, srt, ttml, srv3, srv2, srv1, json3
gd Scottish Gaelic vtt, srt, ttml, srv3, srv2, srv1, json3
sr Serbian vtt, srt, ttml, srv3, srv2, srv1, json3
crs Seselwa Creole French vtt, srt, ttml, srv3, srv2, srv1, json3
sn Shona vtt, srt, ttml, srv3, srv2, srv1, json3
sd Sindhi vtt, srt, ttml, srv3, srv2, srv1, json3
si Sinhala vtt, srt, ttml, srv3, srv2, srv1, json3
sk Slovak vtt, srt, ttml, srv3, srv2, srv1, json3
sl Slovenian vtt, srt, ttml, srv3, srv2, srv1, json3
so Somali vtt, srt, ttml, srv3, srv2, srv1, json3
st Southern Sotho vtt, srt, ttml, srv3, srv2, srv1, json3
es Spanish vtt, srt, ttml, srv3, srv2, srv1, json3
su Sundanese vtt, srt, ttml, srv3, srv2, srv1, json3
sw Swahili vtt, srt, ttml, srv3, srv2, srv1, json3
ss Swati vtt, srt, ttml, srv3, srv2, srv1, json3
sv Swedish vtt, srt, ttml, srv3, srv2, srv1, json3
tg Tajik vtt, srt, ttml, srv3, srv2, srv1, json3
ta Tamil vtt, srt, ttml, srv3, srv2, srv1, json3
tt Tatar vtt, srt, ttml, srv3, srv2, srv1, json3
te Telugu vtt, srt, ttml, srv3, srv2, srv1, json3
th Thai vtt, srt, ttml, srv3, srv2, srv1, json3
bo Tibetan vtt, srt, ttml, srv3, srv2, srv1, json3
ti Tigrinya vtt, srt, ttml, srv3, srv2, srv1, json3
to Tongan vtt, srt, ttml, srv3, srv2, srv1, json3
ts Tsonga vtt, srt, ttml, srv3, srv2, srv1, json3
tn Tswana vtt, srt, ttml, srv3, srv2, srv1, json3
tum Tumbuka vtt, srt, ttml, srv3, srv2, srv1, json3
tr Turkish vtt, srt, ttml, srv3, srv2, srv1, json3
tk Turkmen vtt, srt, ttml, srv3, srv2, srv1, json3
uk Ukrainian vtt, srt, ttml, srv3, srv2, srv1, json3
ur Urdu vtt, srt, ttml, srv3, srv2, srv1, json3
ug Uyghur vtt, srt, ttml, srv3, srv2, srv1, json3
uz Uzbek vtt, srt, ttml, srv3, srv2, srv1, json3
ve Venda vtt, srt, ttml, srv3, srv2, srv1, json3
vi Vietnamese vtt, srt, ttml, srv3, srv2, srv1, json3
war Waray vtt, srt, ttml, srv3, srv2, srv1, json3
cy Welsh vtt, srt, ttml, srv3, srv2, srv1, json3
fy Western Frisian vtt, srt, ttml, srv3, srv2, srv1, json3
wo Wolof vtt, srt, ttml, srv3, srv2, srv1, json3
xh Xhosa vtt, srt, ttml, srv3, srv2, srv1, json3
yi Yiddish vtt, srt, ttml, srv3, srv2, srv1, json3
yo Yoruba vtt, srt, ttml, srv3, srv2, srv1, json3
zu Zulu vtt, srt, ttml, srv3, srv2, srv1, json3
kgkiggkHVtg has no subtitles
Exit code: 0Good, there are auto-generated captions available. I see "en-orig English (Original)" and "en English". I should use the original English captions. Let me download them. I'll use --skip-download to just get the subtitles. I'll use srt format and save to a temporary location. Let me download the English (Original) auto-generated captions.
{
"command": "yt-dlp --skip-download --write-auto-subs --sub-langs en-orig --sub-format srt --output \"/tmp/yt_%(id)s.%(ext)s\" \"https://www.youtube.com/watch?v=kgkiggkHVtg\"",
"timeout": 60000
}Output from command in shell 1b8473:
WARNING: Your yt-dlp version (2025.12.08) is older than 90 days!
It is strongly recommended to always use the latest version.
You installed yt-dlp with pip or using the wheel from PyPi; Use that to update.
To suppress this warning, add --no-update to your command/config.
[youtube] Extracting URL: https://www.youtube.com/watch?v=kgkiggkHVtg
[youtube] kgkiggkHVtg: Downloading webpage
[youtube] kgkiggkHVtg: Downloading tv client config
[youtube] kgkiggkHVtg: Downloading player 66a6ea83-main
[youtube] kgkiggkHVtg: Downloading tv player API JSON
[youtube] kgkiggkHVtg: Downloading android sdkless player API JSON
WARNING: [youtube] kgkiggkHVtg: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
[youtube] [jsc:deno] Solving JS challenges using deno
WARNING: [youtube] [jsc] Remote components challenge solver script (deno) and NPM package (deno) were skipped. These may be required to solve JS challenges. You can enable these downloads with --remote-components ejs:github (recommended) or --remote-components ejs:npm , respectively. For more information and alternatives, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
WARNING: [youtube] kgkiggkHVtg: n challenge solving failed: Some formats may be missing. Ensure you have a supported JavaScript runtime and challenge solver script distribution installed. Review any warnings presented before this message. For more details, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
WARNING: [youtube] kgkiggkHVtg: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
[info] kgkiggkHVtg: Downloading subtitles: en-orig
[info] kgkiggkHVtg: Downloading 1 format(s): 399+251-7
[info] Writing video subtitles to: /tmp/yt_kgkiggkHVtg.en-orig.srt
[download] Destination: /tmp/yt_kgkiggkHVtg.en-orig.srt
[download] 1.00KiB at Unknown B/s (00:00:00)
[download] 3.00KiB at Unknown B/s (00:00:00)
[download] 7.00KiB at Unknown B/s (00:00:00)
[download] 15.00KiB at 4.96MiB/s (00:00:00)
[download] 31.00KiB at 3.30MiB/s (00:00:00)
[download] 31.55KiB at 3.30MiB/s (00:00:00)
[download] 100% of 31.55KiB in 00:00:00 at 164.68KiB/s
Exit code: 0Good, the subtitle file was downloaded. Let me read it to understand the transcript. Then I'll summarize.
{
"file_path": "/tmp/yt_kgkiggkHVtg.en-orig.srt"
}<file-view path="/tmp/yt_kgkiggkHVtg.en-orig.srt" start_line="1" end_line="1133" total_lines="1828"> 1|1 2|00:00:00,000 --> 00:00:03,600 3|We've been seeing you all over the 4| 5|2 6|00:00:01,680 --> 00:00:04,600 7|internet recently. 8| 9|3 10|00:00:03,600 --> 00:00:05,640 11|Um it's particularly 12| 13|4 14|00:00:04,600 --> 00:00:05,720 15|>> We've been posting you all over the 16| 17|5 18|00:00:05,640 --> 00:00:06,550 19|internet. 20| 21|6 22|00:00:05,720 --> 00:00:07,880 23|>> Yeah, yeah, yeah. 24| 25|7 26|00:00:06,550 --> 00:00:09,200 27|>> [laughter] 28| 29|8 30|00:00:07,880 --> 00:00:11,040 31|>> What did you think of the hype reel? 32| 33|9 34|00:00:09,200 --> 00:00:13,100 35|Thank you. Uh I thought it was a great 36| 37|10 38|00:00:11,040 --> 00:00:13,240 39|video you guys made. 40| 41|11 42|00:00:13,100 --> 00:00:14,880 43|>> [laughter] 44| 45|12 46|00:00:13,240 --> 00:00:15,760 47|>> Awesome. It was our first one we've done 48| 49|13 50|00:00:14,880 --> 00:00:16,920 51|actually. There's going to be more to 52| 53|14 54|00:00:15,760 --> 00:00:19,360 55|come. 56| 57|15 58|00:00:16,920 --> 00:00:20,760 59|But maybe maybe for the viewers at home 60| 61|16 62|00:00:19,360 --> 00:00:23,200 63|for the listeners, do you want to just 64| 65|17 66|00:00:20,760 --> 00:00:25,400 67|give a brief introduction on yourself, 68| 69|18 70|00:00:23,200 --> 00:00:27,000 71|your your role at Palantir, 72| 73|19 74|00:00:25,400 --> 00:00:28,680 75|um and we can we can go from there. Got 76| 77|20 78|00:00:27,000 --> 00:00:30,640 79|a lot to dig into. 80| 81|21 82|00:00:28,680 --> 00:00:32,279 83|Super. Well, yes, so I am I run 84| 85|22 86|00:00:30,640 --> 00:00:34,360 87|Palantir's business in the UK and in 88| 89|23 90|00:00:32,279 --> 00:00:37,000 91|Europe. So, that actually covers all the 92| 93|24 94|00:00:34,360 --> 00:00:38,560 95|work we do in in those geographies both 96| 97|25 98|00:00:37,000 --> 00:00:40,920 99|on the public sector side, so for 100| 101|26 102|00:00:38,560 --> 00:00:43,160 103|governments, but also private sector, so 104| 105|27 106|00:00:40,920 --> 00:00:44,840 107|with big large corporations. That's 108| 109|28 110|00:00:43,160 --> 00:00:46,240 111|basically our customer base, large 112| 113|29 114|00:00:44,840 --> 00:00:47,600 115|complex organizations of different 116| 117|30 118|00:00:46,240 --> 00:00:48,720 119|kinds. 120| 121|31 122|00:00:47,600 --> 00:00:50,320 123|Awesome. Awesome. I think I think 124| 125|32 126|00:00:48,720 --> 00:00:52,800 127|there's the there's a backbone of this 128| 129|33 130|00:00:50,320 --> 00:00:54,280 131|conversation today that we would like to 132| 133|34 134|00:00:52,800 --> 00:00:55,880 135|focus on and it's something that's 136| 137|35 138|00:00:54,280 --> 00:00:58,200 139|making the headlines at the moment and 140| 141|36 142|00:00:55,880 --> 00:01:00,720 143|it's the relationship with with Palantir 144| 145|37 146|00:00:58,200 --> 00:01:02,360 147|and the NHS here in the UK. So, maybe I 148| 149|38 150|00:01:00,720 --> 00:01:03,840 151|I thought it would be best if could you 152| 153|39 154|00:01:02,360 --> 00:01:06,480 155|sort of give us like a chronological 156| 157|40 158|00:01:03,840 --> 00:01:07,960 159|description of how has this 160| 161|41 162|00:01:06,480 --> 00:01:09,320 163|uh how has it started? Like I know it 164| 165|42 166|00:01:07,960 --> 00:01:10,800 167|was sort of a connection made during the 168| 169|43 170|00:01:09,320 --> 00:01:12,880 171|COVID times. You guys were helping out 172| 173|44 174|00:01:10,800 --> 00:01:15,160 175|during a time of a global crisis and how 176| 177|45 178|00:01:12,880 --> 00:01:16,640 179|that's evolved, um you know, through the 180| 181|46 182|00:01:15,160 --> 00:01:18,480 183|the Federated Data Platform and then the 184| 185|47 186|00:01:16,640 --> 00:01:20,520 187|conversation today kind of ending in 188| 189|48 190|00:01:18,480 --> 00:01:21,640 191|like some of the public saying, "Can we 192| 193|49 194|00:01:20,520 --> 00:01:23,760 195|put a break clause on this thing in 196| 197|50 198|00:01:21,640 --> 00:01:25,040 199|2027?" Um so, yeah, maybe from you just 200| 201|51 202|00:01:23,760 --> 00:01:26,400 203|to hear the whole chronological order 204| 205|52 206|00:01:25,040 --> 00:01:27,880 207|would be amazing. 208| 209|53 210|00:01:26,400 --> 00:01:29,240 211|Yeah, I would I'd love to tell you the 212| 213|54 214|00:01:27,880 --> 00:01:30,840 215|long the long version of the story, but 216| 217|55 218|00:01:29,240 --> 00:01:33,600 219|I'll try and keep it as as short as 220| 221|56 222|00:01:30,840 --> 00:01:35,200 223|possible. Um so, Palantir, as you no 224| 225|57 226|00:01:33,600 --> 00:01:37,320 227|doubt know, is is actually been around 228| 229|58 230|00:01:35,200 --> 00:01:40,200 231|for about 20 years. For most of that 20 232| 233|59 234|00:01:37,320 --> 00:01:42,680 235|years, we worked almost exclusively in 236| 237|60 238|00:01:40,200 --> 00:01:44,400 239|the intelligence and military domains 240| 241|61 242|00:01:42,680 --> 00:01:45,880 243|for government. And our work in 244| 245|62 246|00:01:44,400 --> 00:01:48,200 247|healthcare is much more recent. And as 248| 249|63 250|00:01:45,880 --> 00:01:51,320 251|you said, it really begins with COVID. 252| 253|64 254|00:01:48,200 --> 00:01:54,320 255|So, uh in the UK, you go back to March 256| 257|65 258|00:01:51,320 --> 00:01:56,720 259|2020, uh the pandemic uh is really 260| 261|66 262|00:01:54,320 --> 00:01:58,240 263|beginning to hit. Uh the severity of it, 264| 265|67 266|00:01:56,720 --> 00:02:01,880 267|the enormity of what we were all facing 268| 269|68 270|00:01:58,240 --> 00:02:03,600 271|is becoming apparent. And the NHS was 272| 273|69 274|00:02:01,880 --> 00:02:05,120 275|really beginning to collapse under that 276| 277|70 278|00:02:03,600 --> 00:02:07,840 279|pressure. They were struggling to 280| 281|71 282|00:02:05,120 --> 00:02:10,479 283|identify the number of COVID patients, 284| 285|72 286|00:02:07,840 --> 00:02:12,960 287|how fast the pandemic was spreading, uh 288| 289|73 290|00:02:10,479 --> 00:02:14,640 291|how many hospital beds were available. 292| 293|74 294|00:02:12,960 --> 00:02:16,680 295|You may you may remember northern Italy 296| 297|75 298|00:02:14,640 --> 00:02:18,320 299|was the first European healthcare system 300| 301|76 302|00:02:16,680 --> 00:02:19,840 303|to collapse under the pressure. And 304| 305|77 306|00:02:18,320 --> 00:02:23,040 307|there was lots of concern about which 308| 309|78 310|00:02:19,840 --> 00:02:25,480 311|bit of Britain was going to go first. 312| 313|79 314|00:02:23,040 --> 00:02:27,440 315|And so, we were brought in um 316| 317|80 318|00:02:25,480 --> 00:02:29,320 319|based on the experience that we had and 320| 321|81 322|00:02:27,440 --> 00:02:31,640 323|I guess the credibility that we built on 324| 325|82 326|00:02:29,320 --> 00:02:33,320 327|the military side to then come and help 328| 329|83 330|00:02:31,640 --> 00:02:35,080 331|tackle the pandemic. So, the first thing 332| 333|84 334|00:02:33,320 --> 00:02:37,200 335|we did was was actually help the 336| 337|85 338|00:02:35,080 --> 00:02:38,320 339|government get that picture of what was 340| 341|86 342|00:02:37,200 --> 00:02:40,800 343|going on. 344| 345|87 346|00:02:38,320 --> 00:02:42,120 347|We then got pulled into a whole series 348| 349|88 350|00:02:40,800 --> 00:02:43,760 351|of other things that more or less track 352| 353|89 354|00:02:42,120 --> 00:02:45,760 355|the headlines that you'll remember. So, 356| 357|90 358|00:02:43,760 --> 00:02:47,280 359|the next crisis was ventilators. Did we 360| 361|91 362|00:02:45,760 --> 00:02:48,680 363|have enough of them? Which hospitals had 364| 365|92 366|00:02:47,280 --> 00:02:50,880 367|them? If we made more, where would you 368| 369|93 370|00:02:48,680 --> 00:02:52,160 371|send them? Then it was PPE, personal 372| 373|94 374|00:02:50,880 --> 00:02:54,400 375|protective equipment. Do we have enough 376| 377|95 378|00:02:52,160 --> 00:02:55,920 379|masks, gloves? We were going to run out. 380| 381|96 382|00:02:54,400 --> 00:02:57,560 383|And then into the autumn of 2020, it 384| 385|97 386|00:02:55,920 --> 00:02:59,280 387|became about vaccines. 388| 389|98 390|00:02:57,560 --> 00:03:00,960 391|Uh as the the the vaccine became 392| 393|99 394|00:02:59,280 --> 00:03:02,000 395|available, how do you roll it out? How 396| 397|100 398|00:03:00,960 --> 00:03:03,720 399|do you get it into people's arms as 400| 401|101 402|00:03:02,000 --> 00:03:05,920 403|quickly as possible? And we became the 404| 405|102 406|00:03:03,720 --> 00:03:07,320 407|operating system for all of that. That 408| 409|103 410|00:03:05,920 --> 00:03:09,440 411|built a lot of confidence, I think, in 412| 413|104 414|00:03:07,320 --> 00:03:11,680 415|the NHS about the software. It was 416| 417|105 418|00:03:09,440 --> 00:03:13,400 419|software that just worked. Uh it did 420| 421|106 422|00:03:11,680 --> 00:03:15,280 423|what we said it was going to do and it 424| 425|107 426|00:03:13,400 --> 00:03:17,280 427|always delivered. It always stepped up. 428| 429|108 430|00:03:15,280 --> 00:03:19,240 431|And so, off the back of that, they they 432| 433|109 434|00:03:17,280 --> 00:03:20,800 435|commissioned us for 2 years to to 436| 437|110 438|00:03:19,240 --> 00:03:23,120 439|continue effectively that work that 440| 441|111 442|00:03:20,800 --> 00:03:25,080 443|we've been doing during COVID. 444| 445|112 446|00:03:23,120 --> 00:03:26,480 447|What we also started doing in parallel, 448| 449|113 450|00:03:25,080 --> 00:03:28,280 451|which is what led to the Federated Data 452| 453|114 454|00:03:26,480 --> 00:03:30,080 455|Platform, was to begin working with some 456| 457|115 458|00:03:28,280 --> 00:03:32,640 459|of the individual trusts. And the 460| 461|116 462|00:03:30,080 --> 00:03:34,360 463|challenge that they had was uh what they 464| 465|117 466|00:03:32,640 --> 00:03:37,200 467|call the elective backlog. So, that's to 468| 469|118 470|00:03:34,360 --> 00:03:38,880 471|say lots and lots of operations which 472| 473|119 474|00:03:37,200 --> 00:03:40,680 475|were canceled during COVID. Anything 476| 477|120 478|00:03:38,880 --> 00:03:42,600 479|that wasn't an emergency, you know, like 480| 481|121 482|00:03:40,680 --> 00:03:44,440 483|a hip hip replacement or, you know, 484| 485|122 486|00:03:42,600 --> 00:03:46,880 487|getting your knee done, just you just 488| 489|123 490|00:03:44,440 --> 00:03:49,040 491|got told, "Sorry, COVID canceled. We'll 492| 493|124 494|00:03:46,880 --> 00:03:50,440 495|get round to you." And so, what that 496| 497|125 498|00:03:49,040 --> 00:03:53,240 499|meant was millions and millions of 500| 501|126 502|00:03:50,440 --> 00:03:54,560 503|people effectively got backed up in this 504| 505|127 506|00:03:53,240 --> 00:03:55,520 507|stock of operations that need to get 508| 509|128 510|00:03:54,560 --> 00:03:57,680 511|done. 512| 513|129 514|00:03:55,520 --> 00:03:59,680 515|And so, we got deployed into a bunch of 516| 517|130 518|00:03:57,680 --> 00:04:01,920 519|hospitals to try and help see if we 520| 521|131 522|00:03:59,680 --> 00:04:03,960 523|could help crunch through that backlog 524| 525|132 526|00:04:01,920 --> 00:04:06,640 527|and get through it quicker. And we 528| 529|133 530|00:04:03,960 --> 00:04:09,240 531|proved some pretty outstanding results 532| 533|134 534|00:04:06,640 --> 00:04:10,920 535|uh very quickly. So, essentially the the 536| 537|135 538|00:04:09,240 --> 00:04:12,280 539|the how do you make better use of the 540| 541|136 542|00:04:10,920 --> 00:04:13,520 543|operating theaters that you have and 544| 545|137 546|00:04:12,280 --> 00:04:14,560 547|make sure that they're full every minute 548| 549|138 550|00:04:13,520 --> 00:04:17,560 551|of the day. 552| 553|139 554|00:04:14,560 --> 00:04:19,920 555|And that then turned into what became 556| 557|140 558|00:04:17,560 --> 00:04:22,560 559|the Federated Data Platform. So, uh the 560| 561|141 562|00:04:19,920 --> 00:04:24,280 563|NHS then ran a a long procurement. 564| 565|142 566|00:04:22,560 --> 00:04:25,880 567|Took a year. Uh there were 30 568| 569|143 570|00:04:24,280 --> 00:04:27,120 571|independent assessors. It was a you 572| 573|144 574|00:04:25,880 --> 00:04:29,480 575|know, it was about as kind of 576| 577|145 578|00:04:27,120 --> 00:04:31,480 579|gold-plated, belt and braces process as 580| 581|146 582|00:04:29,480 --> 00:04:34,000 583|government can run. Um at the end of 584| 585|147 586|00:04:31,480 --> 00:04:36,080 587|which we won. And that is where we are 588| 589|148 590|00:04:34,000 --> 00:04:38,200 591|now, 2 years into that, which is rolling 592| 593|149 594|00:04:36,080 --> 00:04:40,640 595|out the software to every hospital in 596| 597|150 598|00:04:38,200 --> 00:04:43,440 599|the country uh to help them tackle that 600| 601|151 602|00:04:40,640 --> 00:04:45,680 603|elective backlog, but also a whole raft 604| 605|152 606|00:04:43,440 --> 00:04:47,960 607|of other things. 608| 609|153 610|00:04:45,680 --> 00:04:50,080 611|Why is that controversial? Um 612| 613|154 614|00:04:47,960 --> 00:04:51,640 615|well, you tell me. Uh we're as we see 616| 617|155 618|00:04:50,080 --> 00:04:53,000 619|it, [laughter] we're helping we are 620| 621|156 622|00:04:51,640 --> 00:04:56,040 623|helping people get their operations 624| 625|157 626|00:04:53,000 --> 00:04:58,480 627|faster. Um and uh Zack Polanski, the 628| 629|158 630|00:04:56,040 --> 00:05:00,520 631|leader of the Green Party, um 632| 633|159 634|00:04:58,480 --> 00:05:03,600 635|has seems to have taken exception to 636| 637|160 638|00:05:00,520 --> 00:05:06,040 639|that. Uh I mean, I'd argue he's putting 640| 641|161 642|00:05:03,600 --> 00:05:09,160 643|yeah, frankly, he's putting his ideology 644| 645|162 646|00:05:06,040 --> 00:05:10,880 647|over patient lives, patient safety. Um 648| 649|163 650|00:05:09,160 --> 00:05:12,640 651|and it's a it's a it's a pretty hard 652| 653|164 654|00:05:10,880 --> 00:05:14,160 655|sell, I would think, as a politician to 656| 657|165 658|00:05:12,640 --> 00:05:15,960 659|tell your constituents that yeah, 660| 661|166 662|00:05:14,160 --> 00:05:17,920 663|they're going to have to wait 664| 665|167 666|00:05:15,960 --> 00:05:19,640 667|another, I don't know, 6 months to get 668| 669|168 670|00:05:17,920 --> 00:05:21,520 671|their operation because 672| 673|169 674|00:05:19,640 --> 00:05:23,480 675|you've got an ideological problem with 676| 677|170 678|00:05:21,520 --> 00:05:24,960 679|the way in which the software that's 680| 681|171 682|00:05:23,480 --> 00:05:26,720 683|being used to schedule their operation 684| 685|172 686|00:05:24,960 --> 00:05:28,320 687|might be being used in other parts of 688| 689|173 690|00:05:26,720 --> 00:05:31,120 691|the world. That's basically what it 692| 693|174 694|00:05:28,320 --> 00:05:33,720 695|boils down to. That's That's right. I I 696| 697|175 698|00:05:31,120 --> 00:05:35,200 699|I I just wanted to ask about the um 700| 701|176 702|00:05:33,720 --> 00:05:36,600 703|I I I wanted to touch on the the 704| 705|177 706|00:05:35,200 --> 00:05:38,880 707|positive side first, where where it's 708| 709|178 710|00:05:36,600 --> 00:05:40,920 711|like um the the ambition of the 712| 713|179 714|00:05:38,880 --> 00:05:43,560 715|government to try and uh you know, be 716| 717|180 718|00:05:40,920 --> 00:05:45,200 719|transformative. And and you said that uh 720| 721|181 722|00:05:43,560 --> 00:05:47,800 723|the PM kind of gets it, right, on a 724| 725|182 726|00:05:45,200 --> 00:05:49,080 727|broad scope. Can you talk to us about uh 728| 729|183 730|00:05:47,800 --> 00:05:50,640 731|you know, the ambition of the government 732| 733|184 734|00:05:49,080 --> 00:05:52,440 735|and and working with them on on that 736| 737|185 738|00:05:50,640 --> 00:05:54,040 739|positive side first cuz I'm I'm super 740| 741|186 742|00:05:52,440 --> 00:05:55,760 743|interested about that. 744| 745|187 746|00:05:54,040 --> 00:05:57,080 747|Yeah, so the government came out with um 748| 749|188 750|00:05:55,760 --> 00:05:58,880 751|well, it was I think it was beginning of 752| 753|189 754|00:05:57,080 --> 00:06:01,760 755|last year, wasn't it now? Almost a year 756| 757|190 758|00:05:58,880 --> 00:06:04,400 759|ago or a year ago. The AI action plan. 760| 761|191 762|00:06:01,760 --> 00:06:06,720 763|Yeah. Um which I think was a was a 764| 765|192 766|00:06:04,400 --> 00:06:09,800 767|tremendous bit of policy. Like it 768| 769|193 770|00:06:06,720 --> 00:06:11,000 771|essentially set out um exactly what I 772| 773|194 774|00:06:09,800 --> 00:06:13,240 775|think this country should be doing. I 776| 777|195 778|00:06:11,000 --> 00:06:16,000 779|think we're uniquely uniquely positioned 780| 781|196 782|00:06:13,240 --> 00:06:17,600 783|to benefit unfairly in lots of ways from 784| 785|197 786|00:06:16,000 --> 00:06:19,880 787|the AI revolution. I mean, if you were 788| 789|198 790|00:06:17,600 --> 00:06:20,960 791|to design a a technology revolution that 792| 793|199 794|00:06:19,880 --> 00:06:22,360 795|was going to benefit Britain 796| 797|200 798|00:06:20,960 --> 00:06:24,600 799|disproportionately, I think you'd come 800| 801|201 802|00:06:22,360 --> 00:06:25,720 803|up with something like AI. Um but there 804| 805|202 806|00:06:24,600 --> 00:06:27,680 807|is a whole bunch of things that the 808| 809|203 810|00:06:25,720 --> 00:06:30,160 811|government needs to do to enable that 812| 813|204 814|00:06:27,680 --> 00:06:31,520 815|and to accelerate that. And I thought 816| 817|205 818|00:06:30,160 --> 00:06:33,320 819|that action plan was was a great 820| 821|206 822|00:06:31,520 --> 00:06:34,960 823|example. I mean, of course, transforming 824| 825|207 826|00:06:33,320 --> 00:06:38,280 827|public services just one aspect, right? 828| 829|208 830|00:06:34,960 --> 00:06:40,760 831|Like you you you you want AI to be um 832| 833|209 834|00:06:38,280 --> 00:06:42,400 835|woven into every aspect of our economy. 836| 837|210 838|00:06:40,760 --> 00:06:44,280 839|So, actually, the biggest challenge is 840| 841|211 842|00:06:42,400 --> 00:06:46,200 843|you've got to get businesses using it 844| 845|212 846|00:06:44,280 --> 00:06:48,440 847|and transforming the way they operate, 848| 849|213 850|00:06:46,200 --> 00:06:50,040 851|becoming more productive, creating new 852| 853|214 854|00:06:48,440 --> 00:06:52,480 855|kinds of economic value as quickly as 856| 857|215 858|00:06:50,040 --> 00:06:54,640 859|possible. Yeah. Yeah. And we've found 860| 861|216 862|00:06:52,480 --> 00:06:57,080 863|from conversations on X that some people 864| 865|217 866|00:06:54,640 --> 00:06:58,880 867|may uh disagree with this thesis. And 868| 869|218 870|00:06:57,080 --> 00:07:02,480 871|the one in particular I want to bring up 872| 873|219 874|00:06:58,880 --> 00:07:02,480 875|is uh 876| 877|220 878|00:07:51,560 --> 00:07:55,680 879|um I mean, you know, the the staggering 880| 881|221 882|00:07:53,640 --> 00:07:58,320 883|thing, as you said, is like he just the 884| 885|222 886|00:07:55,680 --> 00:08:00,280 887|basic facts were wrong. Uh and I think 888| 889|223 890|00:07:58,320 --> 00:08:02,560 891|it tells you something that he hadn't 892| 893|224 894|00:08:00,280 --> 00:08:04,480 895|bothered to do even the most basic 896| 897|225 898|00:08:02,560 --> 00:08:06,240 899|research about the company. 900| 901|226 902|00:08:04,480 --> 00:08:08,160 903|Uh I don't think he understands what it 904| 905|227 906|00:08:06,240 --> 00:08:09,840 907|is we do. I don't think he understands 908| 909|228 910|00:08:08,160 --> 00:08:11,280 911|the value that we're bringing. You know, 912| 913|229 914|00:08:09,840 --> 00:08:13,680 915|if he can't even, as you say, name our 916| 917|230 918|00:08:11,280 --> 00:08:15,560 919|CEO, that's quite telling. 920| 921|231 922|00:08:13,680 --> 00:08:17,960 923|Uh and yeah, if you say if you're 924| 925|232 926|00:08:15,560 --> 00:08:19,680 927|getting facts like that wrong, then 928| 929|233 930|00:08:17,960 --> 00:08:22,240 931|it's very hard to take it seriously. 932| 933|234 934|00:08:19,680 --> 00:08:24,240 935|Mhm. Yeah. And maybe like there in the 936| 937|235 938|00:08:22,240 --> 00:08:24,880 939|response, there are some details around 940| 941|236 942|00:08:24,240 --> 00:08:27,600 943|uh 944| 945|237 946|00:08:24,880 --> 00:08:29,160 947|uh the the the great things that the 948| 949|238 950|00:08:27,600 --> 00:08:31,000 951|partnership has already achieved, right? 952| 953|239 954|00:08:29,160 --> 00:08:32,240 955|We've mentioned the stages as which this 956| 957|240 958|00:08:31,000 --> 00:08:34,039 959|has happened at, you know, initially 960| 961|241 962|00:08:32,240 --> 00:08:35,840 963|like a global pandemic. You guys were 964| 965|242 966|00:08:34,039 --> 00:08:37,800 967|there to help with this. And now what 968| 969|243 970|00:08:35,840 --> 00:08:39,599 971|we're seeing sort of um connecting these 972| 973|244 974|00:08:37,800 --> 00:08:41,240 975|siloed trusts around and helping people 976| 977|245 978|00:08:39,599 --> 00:08:42,960 979|understand the data a bit more. 980| 981|246 982|00:08:41,240 --> 00:08:44,039 983|Do you guys like have any you know, what 984| 985|247 986|00:08:42,960 --> 00:08:45,360 987|what are some of the great things that 988| 989|248 990|00:08:44,039 --> 00:08:46,880 991|have come out of this partnership that 992| 993|249 994|00:08:45,360 --> 00:08:48,760 995|maybe aren't being covered in Zack 996| 997|250 998|00:08:46,880 --> 00:08:50,040 999|Polanski's video uh about the NHS and 1000| 1001|251 1002|00:08:48,760 --> 00:08:51,360 1003|Palantir? 1004| 1005|252 1006|00:08:50,040 --> 00:08:53,560 1007|Well, yeah, just take the headline 1008| 1009|253 1010|00:08:51,360 --> 00:08:55,640 1011|numbers, right? 110,000 people who've 1012| 1013|254 1014|00:08:53,560 --> 00:08:57,360 1015|had an operation in the UK thanks to 1016| 1017|255 1018|00:08:55,640 --> 00:08:58,720 1019|this software, which they would not have 1020| 1021|256 1022|00:08:57,360 --> 00:09:01,320 1023|otherwise had. 1024| 1025|257 1026|00:08:58,720 --> 00:09:03,320 1027|So, that that's a lot of people. Uh and 1028| 1029|258 1030|00:09:01,320 --> 00:09:05,760 1031|you know, that that effectively is three 1032| 1033|259 1034|00:09:03,320 --> 00:09:07,320 1035|hospital trusts worth of activity, 1036| 1037|260 1038|00:09:05,760 --> 00:09:09,560 1039|annual activity. So, it's like that 1040| 1041|261 1042|00:09:07,320 --> 00:09:11,800 1043|that's how much capacity the software is 1044| 1045|262 1046|00:09:09,560 --> 00:09:13,880 1047|adding to the system as a whole. And you 1048| 1049|263 1050|00:09:11,800 --> 00:09:15,440 1051|know, we're only 2 years in, right? So, 1052| 1053|264 1054|00:09:13,880 --> 00:09:17,400 1055|actually, a lot of those first 2 years 1056| 1057|265 1058|00:09:15,440 --> 00:09:19,520 1059|have been spent laying the foundations, 1060| 1061|266 1062|00:09:17,400 --> 00:09:21,240 1063|setting the software up, integrating the 1064| 1065|267 1066|00:09:19,520 --> 00:09:22,560 1067|data in these hospitals. You could think 1068| 1069|268 1070|00:09:21,240 --> 00:09:23,760 1071|of that a bit like, you know, building a 1072| 1073|269 1074|00:09:22,560 --> 00:09:24,960 1075|house, right? You're you're pouring the 1076| 1077|270 1078|00:09:23,760 --> 00:09:26,640 1079|concrete, you're laying the foundations. 1080| 1081|271 1082|00:09:24,960 --> 00:09:28,920 1083|A lot of that's not visible. It's only 1084| 1085|272 1086|00:09:26,640 --> 00:09:30,600 1087|really now that you're above ground and 1088| 1089|273 1090|00:09:28,920 --> 00:09:33,040 1091|you're going to see those benefits start 1092| 1093|274 1094|00:09:30,600 --> 00:09:34,360 1095|to accumulate at scale. So, fast forward 1096| 1097|275 1098|00:09:33,040 --> 00:09:36,280 1099|a couple of years, there will be 1100| 1101|276 1102|00:09:34,360 --> 00:09:38,640 1103|millions of people in this country 1104| 1105|277 1106|00:09:36,280 --> 00:09:40,360 1107|who've benefited from the software. 1108| 1109|278 1110|00:09:38,640 --> 00:09:41,520 1111|They'll have had operations that 1112| 1113|279 1114|00:09:40,360 --> 00:09:43,600 1115|otherwise they might have had to wait 1116| 1117|280 1118|00:09:41,520 --> 00:09:44,266 1119|much longer for or not had at all. 1120| 1121|281 1122|00:09:43,600 --> 00:09:44,320 1123|Mhm. 1124| 1125|282 1126|00:09:44,266 --> 00:09:46,960 1127|>> [clears throat] 1128| 1129|283 1130|00:09:44,320 --> 00:09:48,760 1131|>> Um and you you mentioned uh you know, 1132| 1133|284 </file-view>
The transcript is quite long (1828 lines). I need to read the full transcript to understand the video before summarizing. Let me read the rest of it.
{
"file_path": "/tmp/yt_kgkiggkHVtg.en-orig.srt",
"offset": 1134,
"limit": 800
}<file-view path="/tmp/yt_kgkiggkHVtg.en-orig.srt" start_line="1134" end_line="1828" total_lines="1828"> 1134|00:09:46,960 --> 00:09:51,360 1135|the reason for the aggressive kind of 1136| 1137|285 1138|00:09:48,760 --> 00:09:53,120 1139|push of Palantir into the UK and how 1140| 1141|286 1142|00:09:51,360 --> 00:09:55,280 1143|bullish obviously, you know, you are 1144| 1145|287 1146|00:09:53,120 --> 00:09:57,760 1147|about the UK and and we are, too. Can 1148| 1149|288 1150|00:09:55,280 --> 00:09:59,920 1151|you talk to us about why uh you know, 1152| 1153|289 1154|00:09:57,760 --> 00:10:01,920 1155|why is the UK such a such an incredible 1156| 1157|290 1158|00:09:59,920 --> 00:10:04,320 1159|company to go and build, you know, one 1160| 1161|291 1162|00:10:01,920 --> 00:10:07,760 1163|of these frontier companies and how a 1164| 1165|292 1166|00:10:04,320 --> 00:10:09,720 1167|place for something like Palantir, 1168| 1169|293 1170|00:10:07,760 --> 00:10:12,240 1171|you know, operating in and and and woven 1172| 1173|294 1174|00:10:09,720 --> 00:10:14,680 1175|into into the the kind of foundations of 1176| 1177|295 1178|00:10:12,240 --> 00:10:16,440 1179|the country. Why is it so important? 1180| 1181|296 1182|00:10:14,680 --> 00:10:18,480 1183|Well, it it it actually it's about the 1184| 1185|297 1186|00:10:16,440 --> 00:10:21,520 1187|the fundamental reason is talent. So, 1188| 1189|298 1190|00:10:18,480 --> 00:10:24,040 1191|Palantir has almost one in five of its 1192| 1193|299 1194|00:10:21,520 --> 00:10:26,360 1195|employees here in Britain, right? That's 1196| 1197|300 1198|00:10:24,040 --> 00:10:28,920 1199|that's probably four or five times 1200| 1201|301 1202|00:10:26,360 --> 00:10:30,760 1203|more in proportional terms than than any 1204| 1205|302 1206|00:10:28,920 --> 00:10:30,840 1207|other comparable US tech company. Yeah, 1208| 1209|303 1210|00:10:30,760 --> 00:10:33,400 1211|yeah. 1212| 1213|304 1214|00:10:30,840 --> 00:10:35,080 1215|>> And we do that because of the quality 1216| 1217|305 1218|00:10:33,400 --> 00:10:36,880 1219|and quantity of the engineering talent 1220| 1221|306 1222|00:10:35,080 --> 00:10:38,920 1223|that comes out of British universities, 1224| 1225|307 1226|00:10:36,880 --> 00:10:40,280 1227|grows up here, but also wants to come 1228| 1229|308 1230|00:10:38,920 --> 00:10:42,440 1231|and live and work in London, right? It's 1232| 1233|309 1234|00:10:40,280 --> 00:10:43,880 1235|a it's a magnet for that kind of talent. 1236| 1237|310 1238|00:10:42,440 --> 00:10:45,360 1239|And so, we build an enormous amount of 1240| 1241|311 1242|00:10:43,880 --> 00:10:46,880 1243|product in the UK. I mean, I think 1244| 1245|312 1246|00:10:45,360 --> 00:10:48,920 1247|that's a very little-known fact about 1248| 1249|313 1250|00:10:46,880 --> 00:10:51,680 1251|Palantir is you you you you could in 1252| 1253|314 1254|00:10:48,920 --> 00:10:53,840 1255|lots of ways stick a made in Britain 1256| 1257|315 1258|00:10:51,680 --> 00:10:56,840 1259|sticker on on the product, right? Like, 1260| 1261|316 1262|00:10:53,840 --> 00:10:59,000 1263|it's it's it's made in London. Um, and 1264| 1265|317 1266|00:10:56,840 --> 00:11:01,200 1267|you know, kind of like DeepMind, you 1268| 1269|318 1270|00:10:59,000 --> 00:11:03,880 1271|know, Google DeepMind is is the Google's 1272| 1273|319 1274|00:11:01,200 --> 00:11:05,920 1275|frontier lab, it's all in London. We we 1276| 1277|320 1278|00:11:03,880 --> 00:11:08,720 1279|in Britain have ended up with, you know, 1280| 1281|321 1282|00:11:05,920 --> 00:11:11,040 1283|a significant chunk of two of the most 1284| 1285|322 1286|00:11:08,720 --> 00:11:13,320 1287|important nodes in what is the emerging 1288| 1289|323 1290|00:11:11,040 --> 00:11:15,280 1291|supply chain. And I think there's lots 1292| 1293|324 1294|00:11:13,320 --> 00:11:17,400 1295|of structural reasons why that is, but 1296| 1297|325 1298|00:11:15,280 --> 00:11:18,520 1299|but in the end it's about talent. Yeah, 1300| 1301|326 1302|00:11:17,400 --> 00:11:19,640 1303|yeah. And 1304| 1305|327 1306|00:11:18,520 --> 00:11:20,400 1307|we completely agree and some of the 1308| 1309|328 1310|00:11:19,640 --> 00:11:22,440 1311|headlines that we've been seeing 1312| 1313|329 1314|00:11:20,400 --> 00:11:24,320 1315|recently have have have sort of 1316| 1317|330 1318|00:11:22,440 --> 00:11:27,200 1319|supported that. It seems that King's 1320| 1321|331 1322|00:11:24,320 --> 00:11:29,880 1323|Cross is becoming more and more of a one 1324| 1325|332 1326|00:11:27,200 --> 00:11:31,640 1327|of these sort of global hubs of of AI, 1328| 1329|333 1330|00:11:29,880 --> 00:11:33,920 1331|right? And it seems that the 1332| 1333|334 1334|00:11:31,640 --> 00:11:36,760 1335|that, you know, the the the that sort of 1336| 1337|335 1338|00:11:33,920 --> 00:11:38,360 1339|small subset of of London is very much 1340| 1341|336 1342|00:11:36,760 --> 00:11:39,320 1343|aware of how important this is and 1344| 1345|337 1346|00:11:38,360 --> 00:11:41,160 1347|they're engaging with it and they're 1348| 1349|338 1350|00:11:39,320 --> 00:11:41,839 1351|pushing it, but I do think that 1352| 1353|339 1354|00:11:41,160 --> 00:11:44,080 1355|um 1356| 1357|340 1358|00:11:41,839 --> 00:11:45,520 1359|more broadly across most countries, I 1360| 1361|341 1362|00:11:44,080 --> 00:11:47,960 1363|remember when we had Sebastian Mallaby 1364| 1365|342 1366|00:11:45,520 --> 00:11:49,400 1367|on, the author of The Infinity Machine, 1368| 1369|343 1370|00:11:47,960 --> 00:11:50,640 1371|recently interviewed Demis Hassabis for 1372| 1373|344 1374|00:11:49,400 --> 00:11:52,000 1375|4 years. 1376| 1377|345 1378|00:11:50,640 --> 00:11:54,320 1379|He mentioned a stat that stuck with me 1380| 1381|346 1382|00:11:52,000 --> 00:11:57,080 1383|and it was one in three Americans are 1384| 1385|347 1386|00:11:54,320 --> 00:11:58,400 1387|scared of AI broadly. So, my question is 1388| 1389|348 1390|00:11:57,080 --> 00:12:01,200 1391|like, do do you think there's work to be 1392| 1393|349 1394|00:11:58,400 --> 00:12:02,960 1395|done on an education piece and 1396| 1397|350 1398|00:12:01,200 --> 00:12:06,200 1399|enablement piece? Is this like, I'm 1400| 1401|351 1402|00:12:02,960 --> 00:12:07,960 1403|scared because I don't understand it? Um 1404| 1405|352 1406|00:12:06,200 --> 00:12:09,480 1407|and that's just the natural sort of 1408| 1409|353 1410|00:12:07,960 --> 00:12:11,160 1411|conclusion that people tend to draw. 1412| 1413|354 1414|00:12:09,480 --> 00:12:12,880 1415|Like, do you think maybe yeah, there's 1416| 1417|355 1418|00:12:11,160 --> 00:12:14,560 1419|like an education delta there or 1420| 1421|356 1422|00:12:12,880 --> 00:12:14,920 1423|something that maybe you have to work 1424| 1425|357 1426|00:12:14,560 --> 00:12:17,120 1427|on? 1428| 1429|358 1430|00:12:14,920 --> 00:12:19,600 1431|>> I think um and I and I think, you know, 1432| 1433|359 1434|00:12:17,120 --> 00:12:22,080 1435|the the the tech sector is doing a a 1436| 1437|360 1438|00:12:19,600 --> 00:12:24,320 1439|pretty terrible job of, in my opinion, 1440| 1441|361 1442|00:12:22,080 --> 00:12:26,600 1443|of explaining, you know, 1444| 1445|362 1446|00:12:24,320 --> 00:12:29,560 1447|what AI actually is and how it's going 1448| 1449|363 1450|00:12:26,600 --> 00:12:30,839 1451|to benefit the vast majority of people. 1452| 1453|364 1454|00:12:29,560 --> 00:12:32,160 1455|I mean, yeah, but so, yeah, these 1456| 1457|365 1458|00:12:30,839 --> 00:12:34,440 1459|doomerish predictions that, you know, in 1460| 1461|366 1462|00:12:32,160 --> 00:12:36,760 1463|18 months time, you know, AI is going to 1464| 1465|367 1466|00:12:34,440 --> 00:12:38,560 1467|make all white-collar jobs disappear. 1468| 1469|368 1470|00:12:36,760 --> 00:12:41,360 1471|Yeah. That's just that that is going to 1472| 1473|369 1474|00:12:38,560 --> 00:12:43,640 1475|terrify people, understandably. And and 1476| 1477|370 1478|00:12:41,360 --> 00:12:46,000 1479|I also think it's wrong. I don't I don't 1480| 1481|371 1482|00:12:43,640 --> 00:12:48,600 1483|think that's correct. Uh yes, of course, 1484| 1485|372 1486|00:12:46,000 --> 00:12:49,960 1487|AI is going to transform many aspects of 1488| 1489|373 1490|00:12:48,600 --> 00:12:51,760 1491|our jobs, but on a net basis, it's 1492| 1493|374 1494|00:12:49,960 --> 00:12:52,920 1495|definitely going to create jobs and it's 1496| 1497|375 1498|00:12:51,760 --> 00:12:54,960 1499|going to make lots and lots of people in 1500| 1501|376 1502|00:12:52,920 --> 00:12:57,080 1503|the economy much more valuable than they 1504| 1505|377 1506|00:12:54,960 --> 00:12:59,520 1507|are today, much more productive. Yeah. 1508| 1509|378 1510|00:12:57,080 --> 00:13:01,839 1511|And so so then, you know, with you in 1512| 1513|379 1514|00:12:59,520 --> 00:13:04,080 1515|your position, how do you feel that 1516| 1517|380 1518|00:13:01,839 --> 00:13:06,839 1519|these companies can, 1520| 1521|381 1522|00:13:04,080 --> 00:13:09,200 1523|you know, can educate the kind of 1524| 1525|382 1526|00:13:06,839 --> 00:13:11,640 1527|the wider population by I guess people 1528| 1529|383 1530|00:13:09,200 --> 00:13:13,040 1531|who like us who are pretty plugged into 1532| 1533|384 1534|00:13:11,640 --> 00:13:15,120 1535|this stuff, 1536| 1537|385 1538|00:13:13,040 --> 00:13:16,600 1539|you know, that's easier for an education 1540| 1541|386 1542|00:13:15,120 --> 00:13:17,920 1543|piece, but then the the ones who are in 1544| 1545|387 1546|00:13:16,600 --> 00:13:19,320 1547|the wider market, how how do you go 1548| 1549|388 1550|00:13:17,920 --> 00:13:21,280 1551|about doing that and and what's the 1552| 1553|389 1554|00:13:19,320 --> 00:13:23,960 1555|strategy, I guess, or the way that you 1556| 1557|390 1558|00:13:21,280 --> 00:13:25,640 1559|think about it for Palantir? 1560| 1561|391 1562|00:13:23,960 --> 00:13:27,320 1563|Well, I think I I think in many ways the 1564| 1565|392 1566|00:13:25,640 --> 00:13:28,920 1567|tech sector, um 1568| 1569|393 1570|00:13:27,320 --> 00:13:31,440 1571|you know, we're our own worst advocates, 1572| 1573|394 1574|00:13:28,920 --> 00:13:33,400 1575|right? Like, the the the people who need 1576| 1577|395 1578|00:13:31,440 --> 00:13:35,080 1579|to be talking about AI are the people 1580| 1581|396 1582|00:13:33,400 --> 00:13:36,720 1583|who are benefiting from it directly, 1584| 1585|397 1586|00:13:35,080 --> 00:13:38,120 1587|right? So, in a in a health care 1588| 1589|398 1590|00:13:36,720 --> 00:13:39,800 1591|context, you want doctors, you want 1592| 1593|399 1594|00:13:38,120 --> 00:13:41,640 1595|nurses, you want people who work in 1596| 1597|400 1598|00:13:39,800 --> 00:13:43,800 1599|hospitals explaining 1600| 1601|401 1602|00:13:41,640 --> 00:13:45,720 1603|why it's making their lives better or, 1604| 1605|402 1606|00:13:43,800 --> 00:13:47,280 1607|you know, in in in police, you want 1608| 1609|403 1610|00:13:45,720 --> 00:13:50,400 1611|police officers talking about why it's 1612| 1613|404 1614|00:13:47,280 --> 00:13:53,520 1615|making their jobs easier to do, faster, 1616| 1617|405 1618|00:13:50,400 --> 00:13:55,600 1619|more efficient. So, I I think it's about 1620| 1621|406 1622|00:13:53,520 --> 00:13:57,160 1623|the users actually stepping up and 1624| 1625|407 1626|00:13:55,600 --> 00:13:58,200 1627|making the case. 1628| 1629|408 1630|00:13:57,160 --> 00:13:59,480 1631|Yeah, yeah. Yeah, I like that. 1632| 1633|409 1634|00:13:58,200 --> 00:14:00,800 1635|>> That that makes sense. Uh last one 1636| 1637|410 1638|00:13:59,480 --> 00:14:03,280 1639|before you go and we're coming up to 1640| 1641|411 1642|00:14:00,800 --> 00:14:05,520 1643|time. I just wanted to quickly ask about 1644| 1645|412 1646|00:14:03,280 --> 00:14:07,520 1647|the Palantir degree. It's a pin tweet 1648| 1649|413 1650|00:14:05,520 --> 00:14:09,640 1651|that you have on your X account. 1652| 1653|414 1654|00:14:07,520 --> 00:14:11,040 1655|Um could you just, you know, what it is 1656| 1657|415 1658|00:14:09,640 --> 00:14:12,640 1659|60,000 pounds I think it was for an 1660| 1661|416 1662|00:14:11,040 --> 00:14:13,959 1663|internship. Would love to know the 1664| 1665|417 1666|00:14:12,640 --> 00:14:15,000 1667|thesis of the philosophy is like, why 1668| 1669|418 1670|00:14:13,959 --> 00:14:17,680 1671|this has been created and what it's 1672| 1673|419 1674|00:14:15,000 --> 00:14:20,280 1675|trying to do. Yeah, so we're we launched 1676| 1677|420 1678|00:14:17,680 --> 00:14:22,240 1679|this a few weeks ago and it is to 1680| 1681|421 1682|00:14:20,280 --> 00:14:24,000 1683|recruit the next generation of 1684| 1685|422 1686|00:14:22,240 --> 00:14:26,120 1687|Palantir's directly directly from 1688| 1689|423 1690|00:14:24,000 --> 00:14:28,079 1691|school. So, the strap line is skip the 1692| 1693|424 1694|00:14:26,120 --> 00:14:30,640 1695|debt and earn the Palantir degree. So, 1696| 1697|425 1698|00:14:28,079 --> 00:14:32,880 1699|don't go to uni, come straight to us. 1700| 1701|426 1702|00:14:30,640 --> 00:14:34,560 1703|And the the reason for that is honestly 1704| 1705|427 1706|00:14:32,880 --> 00:14:35,600 1707|that the, you know, the talent, like I 1708| 1709|428 1710|00:14:34,560 --> 00:14:37,240 1711|mentioned, in this country is 1712| 1713|429 1714|00:14:35,600 --> 00:14:39,560 1715|phenomenal. 1716| 1717|430 1718|00:14:37,240 --> 00:14:40,959 1719|I think and based on the applications 1720| 1721|431 1722|00:14:39,560 --> 00:14:43,400 1723|we're getting, I think this thesis is 1724| 1725|432 1726|00:14:40,959 --> 00:14:45,480 1727|being proven out that at 18, you're as 1728| 1729|433 1730|00:14:43,400 --> 00:14:47,400 1731|good, in some ways maybe even better, 1732| 1733|434 1734|00:14:45,480 --> 00:14:49,520 1735|than you are when you're 22 or 21 when 1736| 1737|435 1738|00:14:47,400 --> 00:14:51,320 1739|you've left uni. And 1740| 1741|436 1742|00:14:49,520 --> 00:14:53,040 1743|you know, for those who want to build, 1744| 1745|437 1746|00:14:51,320 --> 00:14:54,120 1747|just come straight to Palantir and start 1748| 1749|438 1750|00:14:53,040 --> 00:14:56,400 1751|building. 1752| 1753|439 1754|00:14:54,120 --> 00:14:57,680 1755|And don't take on the debt, we'll pay 1756| 1757|440 1758|00:14:56,400 --> 00:14:59,079 1759|you very well, but more importantly, 1760| 1761|441 1762|00:14:57,680 --> 00:15:01,760 1763|you're going to get to have a huge huge 1764| 1765|442 1766|00:14:59,079 --> 00:15:04,000 1767|impact on the biggest and hardest 1768| 1769|443 1770|00:15:01,760 --> 00:15:06,240 1771|problems that we have today. 1772| 1773|444 1774|00:15:04,000 --> 00:15:07,400 1775|Wow. So, how do you hear fast? Um thank 1776| 1777|445 1778|00:15:06,240 --> 00:15:09,160 1779|you so much for joining us. We really 1780| 1781|446 1782|00:15:07,400 --> 00:15:10,839 1783|appreciate the time and yeah, keep us 1784| 1785|447 1786|00:15:09,160 --> 00:15:12,200 1787|updated with everything Palantir and 1788| 1789|448 1790|00:15:10,839 --> 00:15:13,880 1791|what you guys are working on. We'd love 1792| 1793|449 1794|00:15:12,200 --> 00:15:15,079 1795|to have you back sometime. Thank you. 1796| 1797|450 1798|00:15:13,880 --> 00:15:17,200 1799|It's a huge pleasure and love what you 1800| 1801|451 1802|00:15:15,079 --> 00:15:19,000 1803|guys are doing, so all power to you. 1804| 1805|452 1806|00:15:17,200 --> 00:15:20,600 1807|Appreciate it. We'll do another reel as 1808| 1809|453 1810|00:15:19,000 --> 00:15:22,680 1811|well soon. Yeah, more [laughter] hype 1812| 1813|454 1814|00:15:20,600 --> 00:15:24,959 1815|reels. Look forward to it. 1816| 1817|455 1818|00:15:22,680 --> 00:15:26,280 1819|Cheers, bye. Ciao. Right, bye. Um 1820| 1821|456 1822|00:15:24,959 --> 00:15:29,800 1823|awesome stuff. Frame able but it's 1824| 1825|457 1826|00:15:26,280 --> 00:15:29,800 1827|faster, go to frame.io/etm. </file-view>
I notice the subtitle file seems to end around 15:29, but there might be missing content between 00:07:02 and 00:07:51 (a big gap). Let me check the total duration and see if there are more subtitles. Actually, the file shows end time 00:15:29,800 and line 1828 is the last. But there's a big jump in the transcript from 00:07:02 to 00:07:51. That might indicate missing captions or a section where no one was speaking. Let me check the rest of the file between those timestamps to be sure. Wait, I already read the whole file (lines 1-1828). The gap is real in the transcript - perhaps the video had music or a clip playing without captions. Actually, looking at the subtitle, there are entries 220-223 that start at 00:07:51,560. So there's a 49-second gap. This might be a video clip or music playing. But the actual content after that continues with the interview. The video is about 15.5 minutes long according to the transcript. I have enough to summarize. Let me also note there seems to be a missing chunk around entry 220? Actually no, the SRT file shows entries numbered sequentially. But there is a content gap. Let me check if the transcript is complete by looking at the line numbers - it goes from entry 219 ending at 00:07:02,480 to entry 220 starting at 00:07:51,560. That's a large gap. This could mean a video insert or musical montage. I should also get the title/description of the video to provide context. Let me get that with yt-dlp --print.
{
"command": "yt-dlp --print \"%(title)s\\n%(uploader)s\\n%(duration_string)s\\n%(upload_date)s\\n%(description)s\" --skip-download \"https://www.youtube.com/watch?v=kgkiggkHVtg\"",
"timeout": 60000
}Output from command in shell 7dd055:
WARNING: Your yt-dlp version (2025.12.08) is older than 90 days!
It is strongly recommended to always use the latest version.
You installed yt-dlp with pip or using the wheel from PyPi; Use that to update.
To suppress this warning, add --no-update to your command/config.
WARNING: [youtube] [jsc] Remote components challenge solver script (deno) and NPM package (deno) were skipped. These may be required to solve JS challenges. You can enable these downloads with --remote-components ejs:github (recommended) or --remote-components ejs:npm , respectively. For more information and alternatives, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
WARNING: [youtube] kgkiggkHVtg: n challenge solving failed: Some formats may be missing. Ensure you have a supported JavaScript runtime and challenge solver script distribution installed. Review any warnings presented before this message. For more details, refer to https://github.com/yt-dlp/yt-dlp/wiki/EJS
What Everyone Gets Wrong About Palantir | Louis Mosley FULL INTERVIEW\netn.\n15:33\n20260428\nThe European Technology Network is made possible by:
Airwallex: https://www.airwallex.com/
Specter: https://www.tryspecter.com/
Polymarket: https://polymarket.com/
FORA: https://www.foraspace.com/
Framer: https://www.framer.com/
Base: https://www.base.org/
Exit code: 0Now I have the full transcript and metadata. Let me clean up the transcript into a readable format so I can summarize it properly. The SRT has lots of fragments. I should parse it and produce a clean transcript. But I can already understand the content from reading it. Key topics covered: 1. Introduction of Louis Mosley, who runs Palantir's UK and Europe business 2. Palantir's history - 20 years, mostly intelligence/military, then healthcare during COVID 3. COVID work in UK NHS: - March 2020: NHS collapsing, needed data on COVID patients, spread, hospital beds - Brought in based on military/intelligence experience - Helped with ventilators, PPE, vaccine rollout - Built confidence with NHS - "software that just worked" - Commissioned for 2 years 4. Elective backlog: - Millions of operations cancelled during COVID - Palantir deployed to hospitals to help optimize operating theaters - Led to Federated Data Platform - Won a year-long procurement with 30 independent assessors - 2 years into rollout to every hospital 5. Controversy/Political opposition: - Zack Polanski (Green Party leader) opposed it - Mosley argues Polanski is putting ideology over patient lives - Claims Polanski got basic facts wrong, doesn't understand Palantir 6. Government AI ambition: - UK AI Action Plan - good policy - Britain uniquely positioned to benefit from AI - Need businesses using AI, transforming operations 7. Why UK matters to Palantir: - Talent: 1 in 5 Palantir employees in Britain - Engineering talent from British universities - London as magnet - "Made in Britain" product, built in London - King's Cross as global AI hub 8. AI education/public fear: - Tech sector does terrible job explaining AI - "Doomerish" predictions about white-collar jobs disappearing terrify people - Mosley thinks AI will create jobs, make people more productive - Need users (doctors, nurses, police) to advocate, not tech companies 9. Palantir degree: - Skip university, come straight to Palantir - £60,000 internship/salary - Recruit next generation directly from school at 18 - Avoid university debt, start building immediately There's a 49-second gap in transcript (00:07:02 to 00:07:51) which likely contains a clip of Zack Polanski's video being played. The response at 00:07:51 refers to "he just got basic facts wrong" and "can't even name our CEO" - this is in reference to Zack Polanski. Let me create a clean summary. I should also note the host/interviewer is from "etn." (European Technology Network). The interview is about 15:33 long. Now I need to provide a summary. Since the user just pasted the link with no explicit question, I should summarize based on the rules. I can now provide a concise summary of the video.
Video: "What Everyone Gets Wrong About Palantir | Louis Mosley FULL INTERVIEW" by etn. (European Technology Network), 15:33, uploaded 28 Apr 2026.
The interview features Louis Mosley, who runs Palantir's UK and Europe business, defending the company's work with the British government and NHS.
1. Palantir's path into UK healthcare
2. The Federated Data Platform
3. Political pushback
4. UK AI opportunity
5. Public fear and education
6. The "Palantir Degree"
how does he reccomend people get in touch with him?
The user is asking how Louis Mosley recommends people get in touch with him. I need to look back at the transcript to see if he mentions contact information. Let me search the transcript for relevant keywords. Looking at the transcript, it ends around 00:15:29. The host says "keep us updated" and Mosley says "It's a huge pleasure and love what you guys are doing". I don't recall seeing explicit contact info like email, X handle, or LinkedIn in the transcript. But let me check carefully. Wait, the transcript has a line: "the Palantir degree. It's a pin tweet that you have on your X account" - this implies he has an X account. But I need to check if he says his handle or how to contact him. Let me search for "X", "Twitter", "LinkedIn", "email", "contact", "DM", "message", "get in touch" in the transcript. I should use grep on the transcript file.
{
"pattern": "touch|contact|DM|email|X account|Twitter|LinkedIn|handle|message me|reach out|find me",
"path": "/tmp/yt_kgkiggkHVtg.en-orig.srt",
"output_mode": "content",
"case_insensitive": true,
"context_lines": 2
}Found 2 match(es) for pattern 'touch|contact|DM|email|X account|Twitter|LinkedIn|handle|message me|reach out|find me' in /tmp/yt_kgkiggkHVtg.en-orig.srt: -- 2 matches in /tmp/yt_kgkiggkHVtg.en-orig.srt 701|176 702|00:05:33,720 --> 00:05:36,600 > 703|I I I wanted to touch on the the 704| 705|177 ... 1649|413 1650|00:14:05,520 --> 00:14:09,640 >1651|that you have on your X account. 1652| 1653|414
The transcript only mentions his X account in passing ("pin tweet that you have on your X account"), but doesn't provide the handle or explicitly say how to get in touch. The interview also doesn't seem to include contact details at the end. Let me check the very end of the transcript again and also check if there's any contact info in the description or video metadata. Let me also check the video description - I already got it, it just lists sponsors. No contact info. Maybe I need to look at the actual video or other sources to find his X handle. The host mentions "pin tweet that you have on your X account" - so Louis Mosley has an X account, but the handle isn't stated in the audio. However, based on external knowledge, Louis Mosley is likely @LouisMosley on X. But I should be careful not to guess. Let me check if the video has any on-screen text or if I can extract more info. Wait, the user is asking how HE recommends people get in touch. Since the transcript doesn't explicitly state that, I should answer based on what's in the video. If the video doesn't say, I should say so. But maybe I missed something. Let me search more broadly.
{
"pattern": "Louis|follow|connect|link|below|description|bio|account",
"path": "/tmp/yt_kgkiggkHVtg.en-orig.srt",
"output_mode": "content",
"case_insensitive": true,
"context_lines": 1
}Found 4 match(es) for pattern 'Louis|follow|connect|link|below|description|bio|account' in /tmp/yt_kgkiggkHVtg.en-orig.srt: -- 4 matches in /tmp/yt_kgkiggkHVtg.en-orig.srt 158|00:01:03,840 --> 00:01:07,960 > 159|description of how has this 160| ... 166|00:01:07,960 --> 00:01:10,800 > 167|was sort of a connection made during the 168| ... 970|00:08:35,840 --> 00:08:39,599 > 971|we're seeing sort of um connecting these 972| ... 1650|00:14:05,520 --> 00:14:09,640 >1651|that you have on your X account. 1652|
The transcript doesn't contain explicit contact instructions from Louis Mosley. The only reference is that he has an X account with a pin tweet about the Palantir degree. However, I should be helpful. The user might expect me to know his X handle. But per instructions, I should avoid guessing unless confident. I know Louis Mosley is a real person at Palantir, but I shouldn't fabricate contact info. Wait - the question is "how does he recommend people get in touch with him?" This asks what HE says in the video. Since the video doesn't explicitly state this, I should answer honestly that the video doesn't provide specific contact instructions, only that he has an X account where he pinned the Palantir degree tweet. But I can also check if there's more info by looking at the video's comments or end screen? No, I don't have that capability easily. I could use web_search to find his X handle. But the question is specifically about what he recommends in the video. Actually, since the user asked about contact info, and the rules say I should be helpful, I could search the web for Louis Mosley's contact/X. But the user asked "how does he recommend" - implying in the video. Let me answer based on transcript and maybe offer to search if they want external info. Wait, let me re-read the transcript ending carefully to see if he says anything. Looking at lines 1794-1807, he just thanks them and says "It's a huge pleasure and love what you guys are doing, so all power to you." No contact info. So my answer: The video doesn't include explicit contact instructions. The only relevant mention is that he has an X account where the Palantir degree is pinned. He doesn't give a handle, email, or other contact method in the interview. But maybe I can find his X handle to be more helpful? Let me think. The AGENTS.md rules don't prohibit web search. The user is asking a factual question. I could search. But the question specifically asks "how does he recommend" - which is about the video. I should first answer what's in the video, then optionally note I can look up his public profile if helpful. Actually, I think the best approach is to be direct: based on the transcript, he doesn't explicitly state how to contact him. The only reference is his X account. If they want his actual handle, I can search. But maybe I should just search now to be most helpful? Hmm. The instruction says "Avoid guessing. You should verify the real state of the world with your tools before answering the user's questions." So if I can verify, I should. But the question is about the video specifically. If I search for his X handle, that's not what the video says, that's external info. The user might be asking based on the video, expecting the answer to come from the video. Let me answer: "He doesn't give explicit contact instructions during the interview. The only mention is his X account, where he has the Palantir degree post pinned. The video doesn't state his handle or other contact details." I think that's the most accurate answer. I can offer to look up his public social media if they want.
He doesn't give explicit contact instructions during the interview. The only related mention is that he has an X account where the "Palantir degree" post is pinned (the host references it at ~14:05). The video doesn't state his handle, email, or any other contact method.
The interview ends with him thanking the hosts and saying, "It's a huge pleasure and love what you guys are doing, so all power to you."