# Agent Model Routing Table — v1

**Version:** v1  
**Canonical URL:** https://www.emilingemarkarlsson.com/artifacts/routing-table-v1.md  
**Author:** Emil Ingemar Karlsson  
**License:** CC BY 4.0 — cite the URL above when linking or quoting.  
**Context:** Part of the [Agent Cost & Model Selection series](https://www.emilingemarkarlsson.com/blog/agent-cost-model-selection-series). Narrative: [Routing tables for content and data agents](https://www.emilingemarkarlsson.com/blog/routing-tables-content-data-agents).

## How to use

1. Classify each task **before** picking a model (A–D).  
2. Map `model_tier` to concrete model IDs in one roster (OpenRouter, LiteLLM, or static allowlist).  
3. Producer ≠ critic when quality matters.  
4. Class D always requires human approval.  
5. Promote/demote from evidence, not vibes.

## Column definitions

| Column | Meaning |
|---|---|
| `task_class` | A (cheap/frequent), B (structured production), C (judgment/critique), D (irreversible/external) |
| `role` | Agent role that owns the task (researcher, writer, critic, publisher, etc.) |
| `model_tier` | Capability tier — replace with your gateway's model IDs |
| `approval` | `none`, `critic`, or `human` — gate before irreversible action |

## Tier labels (placeholders)

| Tier | Intent |
|---|---|
| `T-free` | Free / tiny — high volume, low stakes |
| `T-cheap` | Low $/1M — structured production |
| `T-mid` | Stronger reasoning / longer context |
| `T-strong` | Frontier-ish for critique or hard judgment |
| `T-human` | Not a model — approval required |

## Routing table

| task_class | role | model_tier | approval | notes |
|---|---|---|---|---|
| A | Researcher | T-free | none | Keyword / angle triage; wrong picks cheap to discard |
| B | Writer | T-cheap | none | First draft with known voice and outline |
| C | Critic | T-strong | none | Voice / factual critique — **different model than writer** |
| D | Publisher | T-human | human | Publish / push live — never auto-publish on free models |

### EXAMPLE rows (replace with your stack)

> These rows are **EXAMPLE** placeholders. Swap `model_tier` for your router config after a model-watch cycle.

| task_class | role | model_tier | approval | notes |
|---|---|---|---|---|
| A | Researcher | T-free | none | **EXAMPLE** — source skim + bullet brief |
| B | Writer | T-cheap | none | **EXAMPLE** — internal links + FAQ suggestions (schema JSON) |
| C | Critic | T-strong | none | **EXAMPLE** — planted-error critique of draft |
| D | Operator | T-human | human | **EXAMPLE** — destructive DDL / prod backfill (model drafts plan only) |

## Changelog

- **v1** (2026-09-06): Initial citable artifact — A–D classes, role/tier/approval columns, EXAMPLE rows.
