recoengine
v0.1.2
Published
Explainable recommendation engine for TypeScript, batteries included. Every recommendation carries the numbers that produced it. No AI, no model to train, no black box.
Maintainers
Readme
recoengine
Batteries-included entry point for the recoengine recommendation system — an algorithmic, explainable, domain-agnostic recommendation engine for TypeScript. Runs on Node, Bun, Deno and in the browser.
This package re-exports @recoengine/core
plus the full standard plugin set, so a single install gives you the whole thing.
npm i recoengineWhat you get
| From | Exports |
| --- | --- |
| @recoengine/core | createEngine, the pipeline, ports, scoring maths, explainability |
| @recoengine/strategies | nine scoring strategies (popularity, history, affinity, recency, similarity, …) |
| @recoengine/modifiers | fatigue, novelty, boosts/penalties |
| @recoengine/diversity | MMR, attribute quotas, blending, similarity |
| @recoengine/features | reusable history-based feature extractors and transforms |
Everything imports from one place:
import {
createEngine,
popularityStrategy,
historyStrategy,
fatigueModifier,
mmrDiversifier,
} from 'recoengine'
const engine = createEngine<Track>()
.use(myProvider) // your data (the only domain-specific part)
.use(myFeatureExtractor) // your payload → numbers
.use(popularityStrategy())
.use(historyStrategy())
.use(fatigueModifier({ threshold: 2, halfLife: 3 }))
.configure({ limits: { maxCandidates: 5_000, maxLimit: 100, timeoutMs: 200 } })
.build()
const { recommendations, diagnostics } = await engine.recommend({ user, history, limit: 10 })See @recoengine/core for the complete,
tested end-to-end example.
Prefer a smaller tree?
Depend on @recoengine/core (zero dependencies) and add only the plugin packages you use.
recoengine is the convenience meta-package; the core plus hand-picked plugins gives you
the same engine with a smaller surface.
Links
- Repository & full docs: https://github.com/waleron07/recommendationEngine
MIT
