---
name: fit-analysis
description: Scores how well one public tender fits a Tender Town scope and explains the verdict, gaps, and unknowns. Use when the user asks whether to bid, for a fit score, a tender evaluation, or a go or no-go on a notice.
---

# Fit analysis

Needs a signed-in account. Call `get_account` first.

Free does not include Tender Evaluation. If `limits.evaluations.limit` is 0, say that it starts on Starter and stop. Do not call `run_scope_agent`.

## Before a run

1. `limits.evaluations.remaining` of 0 means this month is used. `null` means unlimited. Do not run when nothing is left.
2. Take the tender id from `list_tenders` or from a Tender Town page `/tenders/{id}`. Do not invent an id. Call `get_tender` with that id. If it fails, the workspace's active scopes have not collected it. Say so. A public `search` hit is not yet a result of this scope.
3. The score uses the company material already saved on the scope. You cannot upload documents. If that material is thin, the report marks requirements UNKNOWN. Tell the user to add context documents on the scope page before spending a run, when they have not already done that.
4. Call `get_scope_report` with `kind` `tender_evaluation`, the scope id, and the tender id. If `report` is present, show it. Run a new one only when the user asks for a new run and a run is left. A re-run counts. A failed run does not.

## Run

Call `run_scope_agent` with `agent` `tender_evaluation`, `scope_id`, and `item_id`. One call.

## How to present it

Give the fit score, the verdict, and the take. The verdict is `bid`, `bid_with_partner`, `consider`, or `no_bid`. Then strengths, gaps, partners, and next steps.

A mandatory requirement marked NO_MATCH caps the fit. UNKNOWN means the material did not say. Do not treat UNKNOWN as a match, and do not raise the score. Do not invent a certificate, a figure, a person, or a reference.
