Open-source benchmark that measures which developer tools LLMs recommend when asked to build real web apps.
7
stars
717
commits
TypeScript
primary language
Aug 21, 2026
updated
Measure which developer tools LLMs recommend when asked to build real web apps.
Preseason is an open-source benchmark that measures which developer tools LLMs recommend when asked to build real web apps.
We run a fixed set of web-app prompts against a fixed panel of models, parse each answer for recommended tools and services, then publish rankings, head-to-head comparisons, and methodology notes.
The goal is to make AI-driven developer-tool recommendations inspectable, reproducible, and contestable, so you can see which tools AI coding assistants are most likely to put in front of developers.
π Live demo: https://preseason.ai

Preseason currently tracks recommendations across categories like:
For each prompt Γ model run, we record whether the model recommended a known tool, no tool, or an invalid/unrecognized answer.
Recommendations from AI coding assistants shape developer tool adoption faster than blog posts or Twitter threads. If a foundation model quietly favors one database or hosting provider, that preference scales to every developer using it. We think the methodology behind that should be open, reproducible, and contestable, not a private dashboard.
Preseason exists so anyone can:
pnpm run setup # installs deps and starts local Supabase
cp .env.example .env.local # fill with `supabase status` + OpenRouter key
pnpm run db:migrate
pnpm run db:seed
pnpm run db:seed-dev
pnpm run dev
App is at http://localhost:3000. Full setup details, including the env
var table and troubleshooting, are in docs/SETUP.md.
The supported launch path is Vercel + Supabase Cloud. Docker Compose and plain
Postgres self-hosting are not supported yet because Preseason currently depends
on Supabase Auth. See docs/SELF_HOSTING.md.
ββββββββββββββ ββββββββββββββββ βββββββββββββββ
β Cron βββββββββΆβ OpenRouter βββββββββΆβ Response β
β /api/cron β prompt β (one model) β answer β parser β
β /benchmarkβ ββββββββββββββββ ββββββββ¬βββββββ
ββββββββββββββ β
β² βΌ
β every 6 min ββββββββββββββββββ
β β Case decision β
β β tool / none / β
β β invalid β
β ββββββββββ¬ββββββββ
β β
β βΌ
βββββββ΄βββββββ QC pass βββββββββββββββββββββββββββββββ
β Season βββββββββββββββββ Rankings + head-to-head β
β (frozen) β β matches (public) β
ββββββββββββββ βββββββββββββββββββββββββββββββ
Every active season freezes a set of prompt versions and model
snapshots. The cron route at /api/cron/benchmark-run walks every
prompt Γ model combination, requires the model to produce a strict
machine-readable appendix, parses each response into a case decision
(tool / none / invalid), and publishes runs that pass QC.
Public pages, including rankings, category indexes, and head-to-head matches, only read from published benchmark data. Unrecognized tool names are held in a candidate queue for admin review rather than guessed at.
docs/SETUP.md: local development environmentdocs/SELF_HOSTING.md: supported deployment pathdocs/CONFIGURATION.md: every env var explaineddocs/ARCHITECTURE.md: system overviewdocs/CONCEPTS.md: glossary of project termsdocs/METHODOLOGY.md: how rankings are produceddocs/ROADMAP.md: what's planned nextPull requests are very welcome. See CONTRIBUTING.md for
how to set up, what we look for in PRs, and our triage SLA. New to the
project? Look for issues labelled
good first issue.
We follow the Contributor Covenant. Security reports
go through SECURITY.md.
MIT. See the LICENSE file. Third-party tool logos under
public/logos/ are used under nominative fair use; see
docs/LOGO_POLICY.md.
717 commits
TypeScript
99.2%
Open-source benchmark that measures which developer tools LLMs recommend when asked to build real web apps.
7
stars
717
commits
TypeScript
primary language
Aug 21, 2026
updated
Measure which developer tools LLMs recommend when asked to build real web apps.
Preseason is an open-source benchmark that measures which developer tools LLMs recommend when asked to build real web apps.
We run a fixed set of web-app prompts against a fixed panel of models, parse each answer for recommended tools and services, then publish rankings, head-to-head comparisons, and methodology notes.
The goal is to make AI-driven developer-tool recommendations inspectable, reproducible, and contestable, so you can see which tools AI coding assistants are most likely to put in front of developers.
π Live demo: https://preseason.ai

Preseason currently tracks recommendations across categories like:
For each prompt Γ model run, we record whether the model recommended a known tool, no tool, or an invalid/unrecognized answer.
Recommendations from AI coding assistants shape developer tool adoption faster than blog posts or Twitter threads. If a foundation model quietly favors one database or hosting provider, that preference scales to every developer using it. We think the methodology behind that should be open, reproducible, and contestable, not a private dashboard.
Preseason exists so anyone can:
pnpm run setup # installs deps and starts local Supabase
cp .env.example .env.local # fill with `supabase status` + OpenRouter key
pnpm run db:migrate
pnpm run db:seed
pnpm run db:seed-dev
pnpm run dev
App is at http://localhost:3000. Full setup details, including the env
var table and troubleshooting, are in docs/SETUP.md.
The supported launch path is Vercel + Supabase Cloud. Docker Compose and plain
Postgres self-hosting are not supported yet because Preseason currently depends
on Supabase Auth. See docs/SELF_HOSTING.md.
ββββββββββββββ ββββββββββββββββ βββββββββββββββ
β Cron βββββββββΆβ OpenRouter βββββββββΆβ Response β
β /api/cron β prompt β (one model) β answer β parser β
β /benchmarkβ ββββββββββββββββ ββββββββ¬βββββββ
ββββββββββββββ β
β² βΌ
β every 6 min ββββββββββββββββββ
β β Case decision β
β β tool / none / β
β β invalid β
β ββββββββββ¬ββββββββ
β β
β βΌ
βββββββ΄βββββββ QC pass βββββββββββββββββββββββββββββββ
β Season βββββββββββββββββ Rankings + head-to-head β
β (frozen) β β matches (public) β
ββββββββββββββ βββββββββββββββββββββββββββββββ
Every active season freezes a set of prompt versions and model
snapshots. The cron route at /api/cron/benchmark-run walks every
prompt Γ model combination, requires the model to produce a strict
machine-readable appendix, parses each response into a case decision
(tool / none / invalid), and publishes runs that pass QC.
Public pages, including rankings, category indexes, and head-to-head matches, only read from published benchmark data. Unrecognized tool names are held in a candidate queue for admin review rather than guessed at.
docs/SETUP.md: local development environmentdocs/SELF_HOSTING.md: supported deployment pathdocs/CONFIGURATION.md: every env var explaineddocs/ARCHITECTURE.md: system overviewdocs/CONCEPTS.md: glossary of project termsdocs/METHODOLOGY.md: how rankings are produceddocs/ROADMAP.md: what's planned nextPull requests are very welcome. See CONTRIBUTING.md for
how to set up, what we look for in PRs, and our triage SLA. New to the
project? Look for issues labelled
good first issue.
We follow the Contributor Covenant. Security reports
go through SECURITY.md.
MIT. See the LICENSE file. Third-party tool logos under
public/logos/ are used under nominative fair use; see
docs/LOGO_POLICY.md.
717 commits
TypeScript
99.2%