Semantic Enrichment
LLMs extract people, companies, models, audience level, and content depth — metadata that would be tedious to create manually.
TUTOR WITH THEFOCUS.AI
Copy this prompt into Claude, ChatGPT, or any external AI assistant. It points the assistant to the course instructions and links it to your student profile to track your progress and customize observations.
You are not enrolled yet. Enroll to generate a Student ID to track lesson completions and store learning notes.
Semantic Enrichment
What Semantic Enrichment Means
The decorated files contain metadata that wasn’t in the original emails. This metadata — who’s mentioned, which companies appear, what models are discussed, who the audience is, how deep the content goes — is extracted by the LLM from the content itself.
This is the Semantic Enrichment pattern: using LLMs to add structured meaning to unstructured content. It’s one of the most valuable things AI agents can do.
What Gets Extracted
People (with Roles and Affiliations)
people_mentioned:
- name: "Andrej Karpathy"
affiliation: "OpenAI (former)"
- name: "Andrew Ng"
affiliation: "Landing AI"
- name: "Fei-Fei Li"
affiliation: "Stanford"
- name: "Holden Karau"
# No affiliation listed — agent can leave it empty
The agent identifies people from context: names in attributions, quoted speakers, people referenced in article text. It often captures roles and affiliations too, even though those aren’t always explicitly stated in the same sentence.
Companies
companies_mentioned:
[
"Cursor",
"Hugging Face",
"OpenAI",
"Anthropic",
"Meta",
"Google",
"Microsoft",
"Aleph Alpha",
]
Notice this includes companies of all sizes — from major labs (OpenAI, Google) to startups (Cursor, Aleph Alpha). The agent doesn’t need a predefined list; it recognizes company names in context.
AI Models
models_mentioned:
["GPT-4o", "Pharia-1-LLM", "Phi-3.5", "Hermes 3", "Jamba-1.5", "Gemini"]
Models are often mentioned in passing — “OpenAI’s GPT-4o,” “Meta released Llama 3,” “a new paper benchmarks DeepSeek-V3.” The agent extracts them from the surrounding text, handling variations in naming conventions.
Content Characteristics
audience: mixed
depth: overview
has_research_papers: true
has_code_examples: false
is_premium: false
These are subjective judgments that the LLM is surprisingly good at:
- Audience: Is this written for ML researchers (
technical), business leaders (business), general readers (general), or a mix (mixed)? - Depth: Is this a high-level summary (
overview), a moderately detailed piece (intermediate), or a comprehensive deep-dive (deep-dive)? - Research papers: Does the content reference specific academic papers?
- Code examples: Are there code snippets in the content?
- Premium: Is this premium subscriber content?
Tags
tags:
[
"cursor",
"lerobot",
"indie-hacking",
"robotics",
"fine-tuning",
"ai-assistants",
"democratization",
]
Tags are freeform — the agent identifies specific technologies, techniques, and concepts discussed in the article. These aren’t from a controlled vocabulary; the agent generates them from the content.
How the Agent Does It
The classification agent reads the entire markdown file (often 2-8KB of text) and:
- Identifies the series from the subject line (regex + emoji detection)
- Determines content type from structure (multiple sections = digest, Q&A format = interview, etc.)
- Assigns a primary topic based on overall theme
- Extracts entities (people, companies, models) by scanning for known patterns and context
- Judges audience and depth from writing style and technical level
- Generates tags from key concepts discussed
- Sets boolean flags (has papers, has code, is premium) from content inspection
All of this happens in a single pass. The agent doesn’t need multiple API calls or a pipeline of specialized extractors — one LLM call per file handles everything.
The Power of This Pattern
Scale
Doing this manually for 210 files at even 5 minutes each would take 17.5 hours. The agent does it in ~15 minutes (a 70x speedup).
Consistency
Humans get tired, inconsistent, or biased after classifying dozens of items. The agent applies the same taxonomy rules to every file. The 3 validation failures were due to malformed source YAML, not classification errors.
Richness
A human classifier might tag a few topics and call it done. The agent reliably extracts:
- 430 unique people with affiliations
- 553 unique companies
- 615 unique model mentions
- Hundreds of content-specific tags
This creates a cross-reference graph — from any article, you can navigate to every person, company, and model it mentions.
Discoverability
Before classification, finding content meant scanning filenames or full-text search. After classification, you can query:
- “Show me all deep-dives about agents from 2024”
- “Which articles mention Andrej Karpathy?”
- “What are the top companies discussed in FOD digests?”
- “List all technical explainers mentioning Llama models”
- “Show interview transcripts with audience=mixed”
The frontmatter becomes a queryable database.
The Cross-Reference Network
The extracted metadata enables rich cross-linking:
Article: "Golden Age for Indie Devs"
mentions → Andrej Karpathy, Andrew Ng
mentions → Cursor, Hugging Face, OpenAI
mentions → GPT-4o, Phi-3.5, Hermes 3
↓
Entity page: "Andrej Karpathy"
appears in → 34 articles
← links to → OpenAI, Tesla
← connected to → Andrew Ng, Fei-Fei Li
↓
Entity page: "OpenAI"
appears in → 133 articles
← connected to → Anthropic, Google, Microsoft
This is possible because the agent consistently extracts and normalizes entity names across all files.
Why LLMs Are Uniquely Good at This
Traditional NLP approaches to entity extraction (spaCy, NER models) can identify people and organizations but can’t:
- Disambiguate context: Is “Anthropic” a company or an adjective?
- Recognize novel entities: A new startup mentioned for the first time
- Identify AI model names: “GPT-4o” or “Pharia-1-LLM” aren’t in standard NER training data
- Judge content characteristics: Audience level and depth require reading comprehension, not pattern matching
- Handle varied formats: Podcast transcripts, digests, explainers, and profiles all have different structures
LLMs handle all of these naturally. They understand that “Cursor” in an AI newsletter is a company (not a UI element) and that “Hermes 3” is a model release (not a Greek god).
Next: Phase 4: Validation — Scripts, edge cases, and iterative refinement.