From 058c4e1899c171a1516cef6956a9e516378bb9b6 Mon Sep 17 00:00:00 2001 From: Jeffrey Sperling Date: Sat, 14 Mar 2026 00:38:59 -0700 Subject: [PATCH] Classify prompt and animation queries earlier Map prompt-oriented product searches and animation-oriented build searches away from the breaking-news default so source tiering and tiebreakers align with the benchmark topics. Validation: uv run python -m unittest tests.test_query_type --- scripts/lib/query_type.py | 4 ++-- tests/test_query_type.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/lib/query_type.py b/scripts/lib/query_type.py index 36d325d..4e10dff 100644 --- a/scripts/lib/query_type.py +++ b/scripts/lib/query_type.py @@ -7,7 +7,7 @@ QueryType = Literal["product", "concept", "opinion", "how_to", "comparison", "br # Pattern-based classification (no LLM, no external deps) _PRODUCT_PATTERNS = re.compile( - r"\b(price|pricing|cost|buy|purchase|deal|discount|subscription|plan|tier|free tier|alternative)\b", re.I + r"\b(price|pricing|cost|buy|purchase|deal|discount|subscription|plan|tier|free tier|alternative|prompt|prompts|prompting|template|templates)\b", re.I ) _CONCEPT_PATTERNS = re.compile( r"\b(what is|what are|explain|definition|how does|how do|overview|introduction|guide to|primer)\b", re.I @@ -16,7 +16,7 @@ _OPINION_PATTERNS = re.compile( r"\b(worth it|thoughts on|opinion|review|experience with|recommend|should i|pros and cons|good or bad)\b", re.I ) _HOWTO_PATTERNS = re.compile( - r"\b(how to|tutorial|step by step|setup|install|configure|deploy|migrate|implement|build a|create a)\b", re.I + r"\b(how to|tutorial|step by step|setup|install|configure|deploy|migrate|implement|build a|create a|animation|animations|video workflow|render pipeline)\b", re.I ) _COMPARISON_PATTERNS = re.compile( r"\b(vs\.?|versus|compared to|comparison|better than|difference between|switch from)\b", re.I diff --git a/tests/test_query_type.py b/tests/test_query_type.py index c07f343..12838ec 100644 --- a/tests/test_query_type.py +++ b/tests/test_query_type.py @@ -20,6 +20,7 @@ class TestDetectQueryType(unittest.TestCase): self.assertEqual(detect_query_type("cursor IDE pricing"), "product") self.assertEqual(detect_query_type("is Claude Pro worth the cost"), "product") self.assertEqual(detect_query_type("best free tier LLM API"), "product") + self.assertEqual(detect_query_type("nano banana pro prompting"), "product") def test_concept_queries(self): self.assertEqual(detect_query_type("what is WebTransport"), "concept") @@ -35,6 +36,7 @@ class TestDetectQueryType(unittest.TestCase): self.assertEqual(detect_query_type("how to deploy on Vercel"), "how_to") self.assertEqual(detect_query_type("tutorial for building MCP servers"), "how_to") self.assertEqual(detect_query_type("step by step Kubernetes setup"), "how_to") + self.assertEqual(detect_query_type("remotion animations for Claude Code"), "how_to") def test_comparison_queries(self): self.assertEqual(detect_query_type("cursor vs windsurf"), "comparison")