Job posts, product decks, and interview answers often mash AI, ML, deep learning, and Gen AI into one vague blob. Using the wrong label is not pedantry: it changes what data you need, how you evaluate success, and whether a rule engine, a classifier, or a generative model is even the right tool.
Picture nested circles, then one overlapping blob on top:
| Term | Core idea | Typical output | Classic example |
|---|---|---|---|
| AI | Goal-directed intelligent behavior by machine | Decisions, plans, answers | Chess engine with hand-tuned heuristics |
| ML | Learn patterns from examples | Labels, scores, rankings | Spam classifier trained on emails |
| Deep learning | Multi-layer neural nets learn features | Same as ML, often richer inputs | Face recognition from pixels |
| Gen AI | Produce new samples that look like training data / prompts | Text, images, code, audio | Autocomplete a paragraph from a prompt |
Ask these in order:
0.87 is ML/DL, not Gen AI — even if the team branded the dashboard “AI.”Stakeholders often say one word and mean another. Translate before you design:
| They say | They might mean | Ask |
|---|---|---|
| “Add AI to search” | Ranking / embeddings / Gen AI answers | Predict relevance, generate an answer, or both? |
| “ML model for support” | Intent classifier or chatbot | Label tickets or draft replies? |
| “Deep learning for fraud” | Any ML, or specifically neural nets | Tabular boosting vs sequence/graph nets? |
| “Gen AI for reports” | Summaries, charts, or full narrative | Who verifies numbers before publish? |
If you cannot answer those clarifying questions, you do not yet know which circle on the Venn diagram you are building in.
Inside ML you will also hear discriminative vs generative modeling. A discriminative spam filter outputs P(spam | email). A generative system produces a new email that looks like support replies. Gen AI products sit in the generative camp for content; many deep nets in production remain discriminative (detect, rank, classify). Confusing those two is how teams buy a chat API when they needed a calibrated score.
A payments team ships three features. Label them carefully:
| Feature | Mechanism | Accurate label |
|---|---|---|
| Block transfers over $10k without manager approval | if amount > 10000 |
AI (rules), not ML |
| Flag likely fraud from historical transactions | Gradient-boosted trees on features | ML (not DL, not Gen AI) |
| Draft a dispute email from a case summary | Large language model | Gen AI powered by deep learning (hence also ML and AI) |
def label_system(learns_from_data: bool, uses_deep_net: bool, creates_content: bool) -> str:
tags = ["AI"]
if learns_from_data:
tags.append("ML")
if uses_deep_net:
tags.append("deep learning")
if creates_content:
tags.append("Gen AI")
return " ⊃ ".join(tags) if not creates_content else " + ".join(tags)
print(label_system(False, False, False))
# AI
print(label_system(True, False, False))
# AI ⊃ ML
print(label_system(True, True, False))
# AI ⊃ ML ⊃ deep learning
print(label_system(True, True, True))
# AI + ML + deep learning + Gen AI
The last print uses + on purpose: Gen AI is an overlapping capability, not a strict subset of deep learning forever — even though today’s popular Gen AI is deep learning.
Add one more feature and force a precise sentence for the design doc:
cases = [
("rules_limit", False, False, False),
("fraud_boosting", True, False, False),
("vision_cnn_kyc", True, True, False),
("dispute_draft_llm", True, True, True),
]
for name, learn, deep, gen in cases:
print(f"{name}: {label_system(learn, deep, gen)}")
Expected mental labels: rules = AI only; boosting = AI ⊃ ML; KYC CNN = AI ⊃ ML ⊃ deep learning; dispute draft = all four tags with Gen AI called out as the product shape.
AI is the broad field; ML learns from data; deep learning is neural ML; Gen AI is the content-creating application area that usually rides on deep learning but is not the innermost circle of the hierarchy.