@botlearn/rss-manager 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,476 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "dimension": "information-retrieval",
4
+ "tasks": [
5
+ {
6
+ "id": "bench-easy-01",
7
+ "difficulty": "easy",
8
+ "description": "Parse a single RSS 2.0 feed and extract structured article metadata",
9
+ "input": "Parse this RSS feed and extract all articles with their metadata: https://feeds.bbci.co.uk/news/technology/rss.xml. For each article, I need: title, author, publication date (in ISO 8601), URL, categories, and a word count of the description. List them in reverse chronological order.",
10
+ "rubric": [
11
+ {
12
+ "criterion": "Extraction Completeness",
13
+ "weight": 0.4,
14
+ "scoring": {
15
+ "5": "Extracts all available metadata fields (title, link, description, pubDate, guid, category, media:thumbnail) from every item; correctly handles RSS 2.0 namespace extensions; dates converted to ISO 8601 UTC",
16
+ "3": "Extracts title, link, and date but misses some fields like categories or media; dates may not be fully normalized",
17
+ "1": "Extracts only title and link",
18
+ "0": "Cannot parse the feed"
19
+ }
20
+ },
21
+ {
22
+ "criterion": "Data Normalization",
23
+ "weight": 0.3,
24
+ "scoring": {
25
+ "5": "Dates consistently in ISO 8601 UTC; HTML entities decoded in titles; URLs canonicalized; word counts accurately computed from stripped HTML",
26
+ "3": "Some normalization applied but inconsistent (e.g., mixed date formats or HTML fragments in titles)",
27
+ "1": "Raw data with minimal processing",
28
+ "0": "Data is garbled or incorrect"
29
+ }
30
+ },
31
+ {
32
+ "criterion": "Output Organization",
33
+ "weight": 0.3,
34
+ "scoring": {
35
+ "5": "Articles in correct reverse chronological order; clean tabular or structured output; feed-level metadata (title, description, lastBuildDate) reported",
36
+ "3": "Articles listed but ordering may have minor errors; output is readable but not well-structured",
37
+ "1": "Unordered list or difficult to parse output",
38
+ "0": "No coherent output"
39
+ }
40
+ }
41
+ ],
42
+ "expectedScoreWithout": 40,
43
+ "expectedScoreWith": 80
44
+ },
45
+ {
46
+ "id": "bench-easy-02",
47
+ "difficulty": "easy",
48
+ "description": "Discover RSS feeds from a website URL",
49
+ "input": "I want to subscribe to RSS feeds from these websites but I don't have the feed URLs: https://www.theverge.com, https://arstechnica.com, and https://www.wired.com. Find their RSS/Atom feed URLs, identify the feed format (RSS 2.0, Atom, etc.), and tell me the update frequency if available.",
50
+ "rubric": [
51
+ {
52
+ "criterion": "Feed Discovery",
53
+ "weight": 0.4,
54
+ "scoring": {
55
+ "5": "Finds the correct RSS/Atom feed URL for all 3 sites using HTML link rel=alternate, common path probing, or both; identifies multiple feeds per site if available (e.g., main feed + category feeds)",
56
+ "3": "Finds feeds for 2 of 3 sites; or finds feeds but via guessing common paths only",
57
+ "1": "Finds feed for only 1 site",
58
+ "0": "Cannot discover any feeds"
59
+ }
60
+ },
61
+ {
62
+ "criterion": "Format Identification",
63
+ "weight": 0.3,
64
+ "scoring": {
65
+ "5": "Correctly identifies each feed's format (RSS 2.0, Atom 1.0, RSS 1.0) and version; reports TTL or update frequency when specified in the feed",
66
+ "3": "Identifies format type but not version; or misses update frequency information",
67
+ "1": "Lists URLs without format information",
68
+ "0": "Incorrect format identification"
69
+ }
70
+ },
71
+ {
72
+ "criterion": "Actionable Output",
73
+ "weight": 0.3,
74
+ "scoring": {
75
+ "5": "Provides ready-to-subscribe feed URLs with format, update frequency, and a brief description of what each feed covers; suggests which feed to use if multiple are available",
76
+ "3": "Provides URLs and basic info but no recommendation on which to use",
77
+ "1": "Provides URLs only",
78
+ "0": "Output is not actionable"
79
+ }
80
+ }
81
+ ],
82
+ "expectedScoreWithout": 35,
83
+ "expectedScoreWith": 75
84
+ },
85
+ {
86
+ "id": "bench-easy-03",
87
+ "difficulty": "easy",
88
+ "description": "Identify and handle a malformed RSS feed gracefully",
89
+ "input": "I'm having trouble with this feed -- it seems broken or malformed. Try to parse https://example.com/broken-feed.xml which contains unescaped ampersands in URLs, missing closing tags, and Windows-1252 characters declared as UTF-8. Extract whatever articles you can and report what's wrong with the feed so I can tell the publisher.",
90
+ "rubric": [
91
+ {
92
+ "criterion": "Error Diagnosis",
93
+ "weight": 0.4,
94
+ "scoring": {
95
+ "5": "Identifies all 3 specific issues (unescaped ampersands, unclosed tags, encoding mismatch); explains each issue with examples from the feed and suggests fixes for the publisher",
96
+ "3": "Identifies 2 of 3 issues with reasonable explanations",
97
+ "1": "Reports that the feed is broken but cannot diagnose specific issues",
98
+ "0": "Does not recognize the feed is malformed"
99
+ }
100
+ },
101
+ {
102
+ "criterion": "Graceful Recovery",
103
+ "weight": 0.35,
104
+ "scoring": {
105
+ "5": "Successfully extracts articles despite malformation using lenient parsing, entity fixing, and encoding correction; clearly marks which fields may be unreliable due to parse issues",
106
+ "3": "Extracts some articles but loses data from the most malformed sections",
107
+ "1": "Fails to extract most articles",
108
+ "0": "Complete parse failure with no recovery attempt"
109
+ }
110
+ },
111
+ {
112
+ "criterion": "Publisher Report Quality",
113
+ "weight": 0.25,
114
+ "scoring": {
115
+ "5": "Produces a clear, actionable report for the publisher: specific line-level issues, XML/RSS specification references, and concrete fix instructions",
116
+ "3": "General description of issues without specific locations or fix instructions",
117
+ "1": "Vague error message only",
118
+ "0": "No report generated"
119
+ }
120
+ }
121
+ ],
122
+ "expectedScoreWithout": 30,
123
+ "expectedScoreWith": 70
124
+ },
125
+ {
126
+ "id": "bench-med-01",
127
+ "difficulty": "medium",
128
+ "description": "Deduplicate articles across multiple feeds covering the same news events",
129
+ "input": "I have 5 tech news feeds (TechCrunch, Ars Technica, The Verge, Wired, Engadget) and they're all covering the same major stories today. I'm seeing the same news about a big tech acquisition reported across all 5 sources, a product launch covered by 4 sources, and a security breach mentioned by 3 sources. Deduplicate these overlapping stories: identify which articles are about the same event, cluster them together, pick the best representative article for each event, and list the other sources as 'also covered by'. Explain your deduplication reasoning.",
130
+ "rubric": [
131
+ {
132
+ "criterion": "Deduplication Accuracy",
133
+ "weight": 0.35,
134
+ "scoring": {
135
+ "5": "Correctly identifies all cross-source duplicate clusters using multiple signals (URL, title similarity, content fingerprinting, entity overlap); no false positives (distinct stories incorrectly merged) or false negatives (duplicates missed)",
136
+ "3": "Identifies most duplicate clusters but has 1-2 false positives or false negatives; relies on only one dedup signal",
137
+ "1": "Catches only obvious duplicates (same title); misses cross-source near-duplicates",
138
+ "0": "No effective deduplication"
139
+ }
140
+ },
141
+ {
142
+ "criterion": "Representative Selection",
143
+ "weight": 0.25,
144
+ "scoring": {
145
+ "5": "For each cluster, selects the most comprehensive article as the lead based on content depth, source authority, and recency; clearly explains the selection criteria",
146
+ "3": "Selects a reasonable representative but selection criteria are not explained or inconsistently applied",
147
+ "1": "Arbitrary selection with no quality criteria",
148
+ "0": "No representative selection"
149
+ }
150
+ },
151
+ {
152
+ "criterion": "Source Attribution",
153
+ "weight": 0.2,
154
+ "scoring": {
155
+ "5": "Every cluster lists all contributing sources with links; notes unique angles or exclusive information from specific sources",
156
+ "3": "Sources listed but missing some; no analysis of unique angles",
157
+ "1": "Incomplete source attribution",
158
+ "0": "No attribution"
159
+ }
160
+ },
161
+ {
162
+ "criterion": "Reasoning Transparency",
163
+ "weight": 0.2,
164
+ "scoring": {
165
+ "5": "Explains which dedup signals were used for each cluster (GUID match, title similarity score, content fingerprint distance, entity overlap percentage); transparent about confidence level",
166
+ "3": "Some explanation of dedup method but not specific to each cluster",
167
+ "1": "No explanation of reasoning",
168
+ "0": "Reasoning is incorrect or misleading"
169
+ }
170
+ }
171
+ ],
172
+ "expectedScoreWithout": 25,
173
+ "expectedScoreWith": 70
174
+ },
175
+ {
176
+ "id": "bench-med-02",
177
+ "difficulty": "medium",
178
+ "description": "Score and rank articles by importance with user topic preferences",
179
+ "input": "Here are 20 articles from my feeds today. My interests are: AI/ML (high priority), cybersecurity (high priority), open source (medium), cloud infrastructure (medium), consumer electronics (low). Score each article's importance on a 0-100 scale using source authority, recency, cross-source corroboration, topic relevance to my interests, and content depth. Show me the top 10 ranked by importance with the score breakdown for each dimension.",
180
+ "rubric": [
181
+ {
182
+ "criterion": "Scoring Model Application",
183
+ "weight": 0.35,
184
+ "scoring": {
185
+ "5": "Applies all 5 scoring dimensions with correct weights (authority 25%, recency 20%, corroboration 20%, relevance 20%, depth 15%); shows per-dimension scores and weighted composite; scores are consistent and defensible",
186
+ "3": "Uses 3-4 dimensions but weights are incorrect or not all dimensions are scored; composite calculation has minor errors",
187
+ "1": "Scores based on 1-2 dimensions only (e.g., just recency and relevance)",
188
+ "0": "No multi-dimensional scoring"
189
+ }
190
+ },
191
+ {
192
+ "criterion": "Topic Relevance Alignment",
193
+ "weight": 0.3,
194
+ "scoring": {
195
+ "5": "AI/ML and cybersecurity articles receive clear relevance boosts; consumer electronics articles are scored lower for relevance; medium-priority topics fall in between; relevance scores directly reflect the stated user priorities",
196
+ "3": "Generally aligns with user priorities but some misalignment (e.g., a consumer electronics article ranked above a cybersecurity article of equal quality)",
197
+ "1": "User topic preferences are acknowledged but not reflected in scoring",
198
+ "0": "User preferences ignored"
199
+ }
200
+ },
201
+ {
202
+ "criterion": "Score Transparency",
203
+ "weight": 0.2,
204
+ "scoring": {
205
+ "5": "Each article shows: source authority tier and score, recency score with age noted, corroboration count, topic match explanation, depth indicators (word count, citations); final composite with formula",
206
+ "3": "Shows composite score with some dimension breakdowns but not all",
207
+ "1": "Shows only the final score with no breakdown",
208
+ "0": "Scoring is opaque"
209
+ }
210
+ },
211
+ {
212
+ "criterion": "Ranking Quality",
213
+ "weight": 0.15,
214
+ "scoring": {
215
+ "5": "Top 10 ranking intuitively makes sense; high-importance stories from authoritative sources on priority topics are at the top; no obvious ranking anomalies",
216
+ "3": "Ranking is mostly reasonable with 1-2 questionable placements",
217
+ "1": "Ranking has several counter-intuitive placements",
218
+ "0": "Ranking appears random"
219
+ }
220
+ }
221
+ ],
222
+ "expectedScoreWithout": 25,
223
+ "expectedScoreWith": 65
224
+ },
225
+ {
226
+ "id": "bench-med-03",
227
+ "difficulty": "medium",
228
+ "description": "Cluster articles into coherent topics and generate labeled topic groups",
229
+ "input": "I have 30 articles from today's feeds spanning multiple topics. Cluster them into coherent topic groups. For each cluster: (1) generate a descriptive topic label, (2) identify the lead article, (3) list how many articles are in the cluster, (4) note if this is an emerging, trending, or fading topic compared to yesterday. Also identify any articles that don't fit into any cluster (outliers).",
230
+ "rubric": [
231
+ {
232
+ "criterion": "Clustering Quality",
233
+ "weight": 0.3,
234
+ "scoring": {
235
+ "5": "Articles are grouped into coherent, non-overlapping clusters where all articles in a cluster genuinely relate to the same topic; outliers are correctly identified as not fitting any cluster; no articles are force-fit into wrong clusters",
236
+ "3": "Most clusters are coherent but 1-2 articles are misplaced; or some related articles are split across clusters unnecessarily",
237
+ "1": "Clusters are too broad (mixing unrelated topics) or too narrow (splitting a single topic into many clusters)",
238
+ "0": "No meaningful clustering"
239
+ }
240
+ },
241
+ {
242
+ "criterion": "Label Quality",
243
+ "weight": 0.25,
244
+ "scoring": {
245
+ "5": "Topic labels are specific, informative, and accurately capture the essence of the cluster (e.g., 'OpenAI: GPT-5 Release and Industry Reaction' rather than 'AI News'); labels use entity names and key terms",
246
+ "3": "Labels are reasonable but generic (e.g., 'AI/ML' instead of a specific topic within AI)",
247
+ "1": "Labels are vague or misleading",
248
+ "0": "No labels or nonsensical labels"
249
+ }
250
+ },
251
+ {
252
+ "criterion": "Lead Article Selection",
253
+ "weight": 0.2,
254
+ "scoring": {
255
+ "5": "Lead article for each cluster is the most comprehensive and representative; selection criteria are explained (closest to centroid, highest importance, best source)",
256
+ "3": "Reasonable lead article selected but criteria not explained",
257
+ "1": "Lead article selection appears arbitrary",
258
+ "0": "No lead article identified"
259
+ }
260
+ },
261
+ {
262
+ "criterion": "Trend Detection",
263
+ "weight": 0.25,
264
+ "scoring": {
265
+ "5": "Correctly identifies emerging topics (new clusters), trending topics (growing clusters), and fading topics (shrinking clusters) with quantitative comparison to previous window; trend labels are applied appropriately",
266
+ "3": "Some trend detection but without quantitative comparison; or trend labels are present but not well-justified",
267
+ "1": "Mentions trends vaguely without specific identification",
268
+ "0": "No trend detection"
269
+ }
270
+ }
271
+ ],
272
+ "expectedScoreWithout": 25,
273
+ "expectedScoreWith": 65
274
+ },
275
+ {
276
+ "id": "bench-med-04",
277
+ "difficulty": "medium",
278
+ "description": "Generate a structured daily digest with multiple priority tiers",
279
+ "input": "Generate my evening digest from today's articles. I have 45 articles after deduplication from 8 feeds. Organize them into a structured digest with: (1) Top Stories section for the most important items (importance >= 70), (2) Noteworthy section for moderately important items (40-69), (3) Also Mentioned section for lower priority items. Include topic clustering, source attribution, importance scores, and a feed health summary. Keep the Top Stories summaries under 75 words each.",
280
+ "rubric": [
281
+ {
282
+ "criterion": "Digest Structure",
283
+ "weight": 0.3,
284
+ "scoring": {
285
+ "5": "Complete 3-tier digest with Top Stories, Noteworthy, and Also Mentioned sections; clear visual hierarchy; header with date range and stats; feed health report at the end; adheres to evening recap sizing limits",
286
+ "3": "Has the 3 tiers but missing header/footer sections; or sizing limits not respected",
287
+ "1": "Only one tier; flat list with importance scores but no hierarchical organization",
288
+ "0": "Unstructured output"
289
+ }
290
+ },
291
+ {
292
+ "criterion": "Summary Quality",
293
+ "weight": 0.25,
294
+ "scoring": {
295
+ "5": "Top Stories summaries are concise (under 75 words), capture key facts, and explain significance; Noteworthy items have shorter but informative descriptions; Also Mentioned items have one-line entries",
296
+ "3": "Summaries present but some exceed word limits or miss key facts; quality varies across tiers",
297
+ "1": "Summaries are copy-pasted from feed descriptions without concision or curation",
298
+ "0": "No summaries"
299
+ }
300
+ },
301
+ {
302
+ "criterion": "Source Attribution",
303
+ "weight": 0.2,
304
+ "scoring": {
305
+ "5": "Every item includes: source name, publication date, URL, authority tier; clustered items list all contributing sources; feed health report names specific feeds with issues",
306
+ "3": "Source names and dates present but missing URLs or authority tiers for some items",
307
+ "1": "Inconsistent attribution; some items missing source info",
308
+ "0": "No source attribution"
309
+ }
310
+ },
311
+ {
312
+ "criterion": "Importance Threshold Application",
313
+ "weight": 0.25,
314
+ "scoring": {
315
+ "5": "Articles are correctly placed in tiers based on importance scores; no high-scoring articles in low tiers or vice versa; scores are visible and consistent with the tier placement",
316
+ "3": "Mostly correct tier placement with 1-2 misplacements; scores shown but threshold boundaries are slightly inconsistent",
317
+ "1": "Tier placement appears arbitrary rather than score-based",
318
+ "0": "No importance-based tiering"
319
+ }
320
+ }
321
+ ],
322
+ "expectedScoreWithout": 25,
323
+ "expectedScoreWith": 70
324
+ },
325
+ {
326
+ "id": "bench-hard-01",
327
+ "difficulty": "hard",
328
+ "description": "Handle mixed-format feeds with encoding issues, namespace conflicts, and partial content",
329
+ "input": "I have a collection of 6 problematic feeds to aggregate: (1) an RSS 2.0 feed with content:encoded but declared as ISO-8859-1 while serving UTF-8, (2) an Atom feed that uses non-standard namespace prefixes for Dublin Core and Media RSS, (3) an RSS 1.0 (RDF) feed from an academic journal with complex Dublin Core metadata, (4) a feed that only provides truncated descriptions (50 words max) with no full content, (5) a feed that reuses GUIDs across different articles (GUID collision), and (6) a feed that updates article content without changing the GUID or pubDate. Parse all 6, extract maximum content, handle each edge case appropriately, and produce a unified article list. Document every workaround you applied.",
330
+ "rubric": [
331
+ {
332
+ "criterion": "Edge Case Handling",
333
+ "weight": 0.35,
334
+ "scoring": {
335
+ "5": "Correctly handles all 6 edge cases: encoding detection overrides declaration, namespace resolution by URI not prefix, RDF structure parsing, truncated content flagging, GUID collision detection with fallback to URL+title, and content-change detection for silent updates; documents each workaround",
336
+ "3": "Handles 4 of 6 edge cases correctly; documents most workarounds",
337
+ "1": "Handles 2 or fewer edge cases; minimal documentation",
338
+ "0": "Fails on most edge cases without attempting recovery"
339
+ }
340
+ },
341
+ {
342
+ "criterion": "Content Maximization",
343
+ "weight": 0.25,
344
+ "scoring": {
345
+ "5": "Extracts the fullest content available from each feed: uses content:encoded when available, falls back through the priority chain, flags truncated content, identifies updated articles and keeps latest version",
346
+ "3": "Extracts reasonable content but misses some fuller sources (e.g., uses description when content:encoded was available)",
347
+ "1": "Extracts minimal content from most feeds",
348
+ "0": "Content extraction largely fails"
349
+ }
350
+ },
351
+ {
352
+ "criterion": "Unified Output Consistency",
353
+ "weight": 0.2,
354
+ "scoring": {
355
+ "5": "All articles from all 6 feeds are presented in a consistent normalized format regardless of source format; dates in ISO 8601, URLs canonicalized, HTML sanitized, metadata fields aligned",
356
+ "3": "Mostly consistent but some format artifacts remain from specific feed types",
357
+ "1": "Output varies significantly based on source feed format",
358
+ "0": "Inconsistent or garbled output"
359
+ }
360
+ },
361
+ {
362
+ "criterion": "Workaround Documentation",
363
+ "weight": 0.2,
364
+ "scoring": {
365
+ "5": "Each workaround is clearly documented: what the issue was, how it was detected, what the workaround does, and any reliability caveats; documentation could serve as a troubleshooting guide",
366
+ "3": "Workarounds are mentioned but not explained in detail",
367
+ "1": "Minimal or no documentation of applied workarounds",
368
+ "0": "No documentation"
369
+ }
370
+ }
371
+ ],
372
+ "expectedScoreWithout": 20,
373
+ "expectedScoreWith": 60
374
+ },
375
+ {
376
+ "id": "bench-hard-02",
377
+ "difficulty": "hard",
378
+ "description": "Full-pipeline aggregation with dedup, scoring, clustering, and trend analysis across a large feed collection",
379
+ "input": "I manage 25 RSS feeds across 4 categories: tech news (8 feeds), cybersecurity (6 feeds), AI/ML research (5 feeds), and open source (6 feeds). Over the past 24 hours, these feeds have produced approximately 200 articles. Run the full aggregation pipeline: (1) parse and extract all articles, (2) deduplicate across all 25 feeds -- I expect significant overlap especially on major stories, (3) score every article using the multi-dimensional importance model with my priorities (cybersecurity > AI/ML > open source > general tech news), (4) cluster into topics, (5) detect emerging and fading trends by comparing to the previous 24-hour window, (6) generate a comprehensive morning digest. I need the digest plus a full analytics report: dedup statistics, feed health, topic distribution, and trend analysis.",
380
+ "rubric": [
381
+ {
382
+ "criterion": "Pipeline Completeness",
383
+ "weight": 0.25,
384
+ "scoring": {
385
+ "5": "Executes all 6 pipeline stages in correct order; each stage's output feeds properly into the next; handles the scale (200 articles, 25 feeds) without degradation; pipeline flow is clearly traced",
386
+ "3": "Covers most pipeline stages but skips or poorly executes one; or stages are executed independently without proper data flow between them",
387
+ "1": "Only 2-3 pipeline stages attempted",
388
+ "0": "Pipeline is not coherent"
389
+ }
390
+ },
391
+ {
392
+ "criterion": "Deduplication at Scale",
393
+ "weight": 0.25,
394
+ "scoring": {
395
+ "5": "Effectively deduplicates across 25 feeds; reports dedup statistics (total articles, unique, near-duplicates merged, exact duplicates removed); handles the high overlap expected in tech/cybersecurity news; dedup decisions are defensible",
396
+ "3": "Deduplication works but statistics are incomplete; or some cross-category duplicates are missed",
397
+ "1": "Deduplication is partial; many duplicates remain in the output",
398
+ "0": "No effective deduplication at this scale"
399
+ }
400
+ },
401
+ {
402
+ "criterion": "Analytics Report Quality",
403
+ "weight": 0.25,
404
+ "scoring": {
405
+ "5": "Comprehensive analytics: dedup stats (pre/post counts, duplicate rate per feed), feed health (errors, latency, freshness per feed), topic distribution (articles per category, top topics), trend analysis (emerging/fading topics with quantitative evidence); visualizable data structure",
406
+ "3": "Includes some analytics but missing 1-2 major sections; numbers provided but not contextualized",
407
+ "1": "Minimal analytics; basic counts only",
408
+ "0": "No analytics report"
409
+ }
410
+ },
411
+ {
412
+ "criterion": "Digest Quality at Scale",
413
+ "weight": 0.25,
414
+ "scoring": {
415
+ "5": "Digest is well-organized despite the large volume; importance scoring correctly reflects user priorities (cybersecurity and AI/ML stories dominate top spots); topic clusters are coherent; sizing limits respected; digest is genuinely useful for a human reader",
416
+ "3": "Digest is produced but struggles with volume (too long, or important stories buried); priorities partially reflected",
417
+ "1": "Digest is overwhelming or poorly organized; does not effectively summarize 200 articles",
418
+ "0": "Digest is not usable"
419
+ }
420
+ }
421
+ ],
422
+ "expectedScoreWithout": 15,
423
+ "expectedScoreWith": 60
424
+ },
425
+ {
426
+ "id": "bench-hard-03",
427
+ "difficulty": "hard",
428
+ "description": "Optimize a poorly managed feed collection with health issues, redundancy, and coverage gaps",
429
+ "input": "Audit my RSS feed collection and optimize it. I have 15 feeds but I suspect problems: some feeds have been dead for weeks, several feeds heavily overlap (3 different feeds from the same publisher covering similar topics), I'm missing coverage on topics I care about (AI safety, supply chain security, WebAssembly), and my digest has been getting worse -- too many duplicates and not enough diverse perspectives. Analyze the feed collection health, identify redundancies and gaps, suggest feeds to remove and add, estimate the impact on digest quality, and propose an optimized feed list with a polling schedule.",
430
+ "rubric": [
431
+ {
432
+ "criterion": "Health Audit Quality",
433
+ "weight": 0.25,
434
+ "scoring": {
435
+ "5": "Identifies dead/unhealthy feeds with specific evidence (error rates, last successful poll, HTTP status codes); diagnoses the root cause for each unhealthy feed; provides per-feed health scores",
436
+ "3": "Identifies some unhealthy feeds but diagnosis is incomplete; missing specific error evidence",
437
+ "1": "Vague assessment of feed health without specific feed-level diagnosis",
438
+ "0": "No health audit"
439
+ }
440
+ },
441
+ {
442
+ "criterion": "Redundancy Analysis",
443
+ "weight": 0.25,
444
+ "scoring": {
445
+ "5": "Identifies overlapping feeds with quantitative overlap metrics (content similarity, topic overlap percentage); explains which specific feeds are redundant with each other; recommends which to keep (based on content quality, update frequency, authority) and which to remove",
446
+ "3": "Identifies obvious redundancies but without quantitative analysis; recommendations present but not well-justified",
447
+ "1": "Mentions redundancy exists but does not identify specific feeds",
448
+ "0": "No redundancy analysis"
449
+ }
450
+ },
451
+ {
452
+ "criterion": "Coverage Gap Identification & Fill",
453
+ "weight": 0.25,
454
+ "scoring": {
455
+ "5": "Maps current topic coverage, identifies specific gaps (AI safety, supply chain security, WebAssembly); suggests concrete feed URLs for each gap with justification (source quality, update frequency, relevance); estimates the coverage improvement",
456
+ "3": "Identifies gaps and suggests some feeds but without specific URLs or quality assessment",
457
+ "1": "Acknowledges gaps exist but offers no actionable suggestions",
458
+ "0": "No gap analysis"
459
+ }
460
+ },
461
+ {
462
+ "criterion": "Optimization Plan",
463
+ "weight": 0.25,
464
+ "scoring": {
465
+ "5": "Provides a complete optimized feed list: feeds to keep (with rationale), feeds to remove (with rationale), feeds to add (with URLs and rationale); includes a per-feed polling schedule based on update frequency; estimates impact on digest metrics (fewer duplicates, broader coverage, better quality)",
466
+ "3": "Provides recommendations but the plan is incomplete (e.g., no polling schedule, or missing impact estimates)",
467
+ "1": "General recommendations without a specific optimized feed list",
468
+ "0": "No optimization plan"
469
+ }
470
+ }
471
+ ],
472
+ "expectedScoreWithout": 15,
473
+ "expectedScoreWith": 55
474
+ }
475
+ ]
476
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": "0.0.1",
3
+ "timeout": 60,
4
+ "tasks": [
5
+ {
6
+ "id": "smoke-01",
7
+ "description": "Generate a daily digest from overlapping tech news feeds with deduplication and importance ranking",
8
+ "input": "I subscribe to these RSS feeds: TechCrunch (https://techcrunch.com/feed/), Ars Technica (https://feeds.arstechnica.com/arstechnica/index), The Verge (https://www.theverge.com/rss/index.xml), and Hacker News (https://hnrss.org/frontpage). Generate a morning digest for today. Several of these feeds are likely covering the same stories -- deduplicate them, score by importance, group by topic, and give me a concise summary of the top stories. I care most about AI/ML, open source, and cybersecurity topics.",
9
+ "rubric": [
10
+ {
11
+ "criterion": "Feed Parsing & Extraction",
12
+ "weight": 0.2,
13
+ "scoring": {
14
+ "5": "Correctly identifies all 4 feed formats, extracts titles, URLs, dates, authors, and body content; handles namespace extensions (content:encoded); normalizes dates to consistent format",
15
+ "3": "Parses most feeds correctly but misses some metadata fields or struggles with one feed format",
16
+ "1": "Extracts only basic title and link; ignores body content and metadata",
17
+ "0": "Cannot parse feeds or produces garbled output"
18
+ }
19
+ },
20
+ {
21
+ "criterion": "Deduplication Quality",
22
+ "weight": 0.3,
23
+ "scoring": {
24
+ "5": "Identifies cross-source duplicates using URL canonicalization and content similarity; merges same-story coverage from multiple outlets with proper attribution; distinguishes true duplicates from related-but-different articles",
25
+ "3": "Catches obvious URL duplicates but misses content-level duplicates across different domains; or over-deduplicates by merging distinct stories with similar titles",
26
+ "1": "Minimal deduplication; same stories appear multiple times from different feeds",
27
+ "0": "No deduplication attempted"
28
+ }
29
+ },
30
+ {
31
+ "criterion": "Importance Scoring & Topic Relevance",
32
+ "weight": 0.3,
33
+ "scoring": {
34
+ "5": "Top stories reflect genuine importance weighted by source authority, cross-source corroboration, and user interest alignment (AI/ML, open source, cybersecurity); importance scores are explained; lower-priority items are appropriately ranked below",
35
+ "3": "Ranking is reasonable but does not clearly account for user topic preferences; or importance scores are present but not justified",
36
+ "1": "Articles ranked by recency only with no importance differentiation",
37
+ "0": "No ranking or scoring applied"
38
+ }
39
+ },
40
+ {
41
+ "criterion": "Digest Structure & Readability",
42
+ "weight": 0.2,
43
+ "scoring": {
44
+ "5": "Digest is organized by topic clusters with clear labels; each entry has source attribution, date, importance score, and a concise summary; includes a feed health summary and related article counts; respects morning brief sizing limits",
45
+ "3": "Articles are grouped but labels are vague; summaries present but inconsistent in quality; missing some attribution or metadata",
46
+ "1": "Flat list of articles with no topic grouping or inconsistent formatting",
47
+ "0": "Unstructured output or raw feed data"
48
+ }
49
+ }
50
+ ],
51
+ "passThreshold": 60
52
+ }
53
+ ]
54
+ }