shipwithjev

Catalog / Research & data

0472GitHub

tiershift

Policy-bounded model routing for TypeScript and Python.

iamvatsalpatel/tiershiftREADME ↗
tiershift</h1>

<p align="center">
  <b>Stop paying flagship prices for prompts that don't need one.</b><br>
  tiershift reads each request, picks the cheapest model tier that can handle it, and escalates on evidence.<br>
  The judgment comes from <a href="https://docs.typesafe.ai">TypeSafe Jev</a>, a calibrated decision model. About 180 ms. Four cents per thousand routes.
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/tiershift"><img alt="npm" src="https://img.shields.io/npm/v/tiershift?label=npm&color=2a78d6"></a>
  <a href="https://pypi.org/project/tiershift/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tiershift?label=pypi&color=2a78d6"></a>
  <a href="https://github.com/iamvatsalpatel/tiershift/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/iamvatsalpatel/tiershift/actions/workflows/ci.yml/badge.svg"></a>
  <a href="LICENSE"><img alt="MIT" src="https://img.shields.io/badge/license-MIT-2a78d6"></a>
</p>

```
$ tiershift route "thanks, that's all for now"
→ deepseek/deepseek-flash     fast      default → fast

$ tiershift route "Prove there are infinitely many primes of the form 4k+3."
→ openai/gpt-5.6-terra        mid       needs_reasoning 0.97 → at_least mid

$ tiershift route "Redline this clause: Vendor indemnifies Client against all claims whatsoever."
→ openai/gpt-5.6-terra        mid       stakes 1.98 → at_least mid
```

Three real routes. Every request starts on the fast tier. It moves up only when Jev finds a reason: multi-step reasoning, hard difficulty, high stakes, or safety. The reason is printed with every decision, and `tiershift explain` shows every signal behind the last one.

## What we measured

120 prompts, from one-word acknowledgements to system design and legal review. Four ways to pick a model. Every 

Also filed under Research & data