Skip to content

Introduction

Matt Van Horn’s Last30Days skill looks simple from the outside: ask about a topic, and it searches Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web to tell you what people have actually been saying lately.

Under the hood, it is more interesting than that.

This project is really three systems layered together:

  1. A very explicit skill contract in skills/last30days/SKILL.md
  2. A Python research engine centered on scripts/last30days.py and lib/pipeline.py
  3. An optional persistence and ops layer for watchlists, stored findings, and briefings (store.py, watchlist.py, briefing.py)

That combination matters. A lot of “AI research” tools are either just prompt wrappers around web search, or raw retrieval stacks with no strong host-model contract. Last30Days is neither. It is opinionated at both layers:

  • the host model is told exactly how to behave
  • the engine does the deterministic heavy lifting
  • the artifact layer separates model-facing scratchpad from shareable output

This walkthrough focuses on the current v3.3.2 codebase and follows the actual implementation.

What this is not:

  • a usage tutorial
  • a setup guide
  • a marketing summary of the README

What this is:

  • a source-backed architectural tour
  • an explanation of why the project is structured this way
  • a look at the unusually careful split between planning, retrieval, scoring, clustering, and rendering
#ChapterWhat you’ll learn
1Product Thesis & Surface AreaWhat Last30Days is actually building and how the surface area maps to that thesis
2SKILL.md as Control PlaneWhy the giant skill file exists and what role it plays
3CLI Entry Point & RuntimeThe Python entry point, argument surface, runtime guards, and save flow
4Query Planning & Topic ResolutionHow the engine decides where to search before searching
5Source Adapters & Auth ModelHow the source connectors work and why BYO credentials are central
6Ranking, Clustering & FusionThe retrieval-quality stack: RRF, rerank, diversity controls, and story clustering
7Rendering & Shareable HTMLThe split between engine evidence, host-model synthesis, and final artifact
8Watchlists, Storage & BriefingsSQLite accumulation, scheduled deltas, and briefing generation
9Testing & Release DisciplineWhat the tests and release machinery reveal about project maturity
10Why the Design WorksThe larger pattern this repo points to

The most important design choice in this repo is not any individual source adapter.

It is this: the model is not trusted to invent the product behavior on the fly.

Instead, Last30Days gives the model a strict contract, then gives the engine the hard deterministic work: planning constraints, retrieval fanout, normalization, fusion, clustering, storage, and rendering.

That is why the system feels more like a product than a prompt.

Built by LangCraft. Source analysis based on mvanhorn/last30days-skill v3.3.2.