--- license: apache-2.0 base_model: answerdotai/ModernBERT-large language: - en pipeline_tag: text-classification tags: - routing - multi-agent - agent-routing - cross-encoder - bert - modernbert - lora - zero-shot-classification --- # Signpost Signpost is a **BERT-based router for multi-agent chat**, built on [ModernBERT-large](https://huggingface.co/answerdotai/ModernBERT-large). You give it the conversation, the agent that answered last, and your agents with a one-line description each. It tells you which agent should handle the user's latest message. The same model also answers **grounded questions about a text**: - **yes / no** — "Does this convey urgency?" - **choice** — "Which team should handle this?" - **score on an ordered scale** — "How frustrated is the writer? calm / frustrated / furious" The options are yours and can change on every call. They aren't fixed classes, so new agents or labels need no retraining. **Many agents?** [Signpost one-pass](https://huggingface.co/skamalj/signpost-one-pass) is a sibling model that reads all the options in **one** forward pass, so its latency stays at about 60 ms on a T4 for 2 or 50 options (this model takes about 190 ms with 8–11 agents). It has the same calls, and is level with this model on routing but slightly behind on grounded questions. It is fine-tuned from [answerdotai/ModernBERT-large](https://huggingface.co/answerdotai/ModernBERT-large) (395M parameters, encoder only). LoRA adapters (r 16) were trained and then merged into the weights, and a 0.26M-parameter scoring head was added. That is about one fifth of the size of the 2B decoder-based Strands decider ([StrandsAgents/strands-decider-2B-hobson-v19](https://huggingface.co/StrandsAgents/strands-decider-2B-hobson-v19)), and on a GPU it takes about 50–70 ms per decision. ## How it works Signpost is a **cross-encoder**. It reads each option together with the conversation and the question, one forward pass per option (all options in one batch). It gives each option a score, and a softmax over the scores gives the probabilities. Every call, including routing, is the same "pick one of these options" task: ``` user: [SEP] assistant: [SEP] … [SEP] user: [SEP] current agent: [SEP] question: [SEP] candidate: