Inspiration

A commercial underwriter opens their inbox to over a hundred submissions and has time to read maybe ten. The carrier's appetite guidelines say which business they want, but someone still has to check every submission against them by hand. We built the agent that does it for them, and shows its work.

What it does

Fedwrite is an AI underwriting desk built on the Federato Core API. It reads the entire submission queue, ranks it against the carrier's appetite, and explains every decision in plain English.

  • Learns the data on its own. It explores the API's schema, maps 1,033 field paths, and works out which field holds each thing the guidelines care about. It confirms every match with a live query.
  • Triages 113 submissions in 5 API calls. One call settles 107 of them. The agent then decides for itself which 14 deserve a deeper look, and pulls their full building schedules and loss history.
  • Scores two things, separately. Appetite fit asks "do we write this kind of business?" Risk quality asks "is this a good example of it?" An AI underwriter grades twelve risk signals per account and gives its reasoning for each one.
  • Finds the business you're missing. It flagged 3 strong risks that the guidelines decline on a technicality. That is an opportunity, not a rejection.
  • Shows its reasoning. Every step records what it was testing, what it found, and what it cost. You can trace any decision back to the query behind it.

The dashboard gives underwriters a ranked queue, a portfolio view of the whole book, the rulebook, and the agent's full reasoning trace. They approve, refer or decline with one click.

How we built it

The agent is written in Python with pydantic, httpx and typer. The dashboard is React, TypeScript and Vite. OpenAI's gpt model scores the risk signals.

The appetite guidelines live in a simple data file, not in code, so changing a rule or adding a new line of business needs no engineering. The agent writes all of its own API queries. A query planner picks the right structure from the shape of the data, so the agent handles nested arrays and linked records correctly every time.

Risk scoring runs across the whole book at once, so the model can judge each account against its peers. That takes 12 model calls where a naive approach needs over 1,300. Results are cached, so the same book always produces the same answer.

Every API response is recorded, so the entire product runs offline.

Challenges we ran into

  • The API behaved differently from its documentation. We measured its real behaviour and built around it.
  • Queries that return believable but wrong numbers. One aggregation inflated premium totals by up to nine times while looking perfectly valid. The agent now refuses to build that kind of query.
  • Choosing the right model. We benchmarked four. The cheapest one confidently scored worse risks as better ones, and a reasoning model gave every account the same score. We picked the one that made zero errors across 161 comparisons.

Accomplishments that we're proud of

  • The agent works on a schema it has never seen. Rename every field in the data and it still gets the same answers.
  • 95% of the queue is decided from a single API call.
  • Every recommendation comes with a reason an underwriter can check.
  • Results are fully reproducible. The same inputs give identical output, down to the byte.

What we learned

Most of what makes an agent trustworthy sits underneath the AI: understanding the shape of your data, checking a guess before acting on it, and refusing to return numbers you cannot stand behind.

We also learned some insurance. A policy with no claims on file is unknown, not clean. And "in appetite" is not the same as "priced right".

What's next for Fedwrite

  • Self-directed risk models. The agent studies the data and proposes which signals matter on its own.
  • Live rule edits. Change a guideline in plain language and watch the queue re-rank instantly.
  • Every line of business. The queue already holds seven. Each new one is a data file, not new code.
  • Outside data. Flood, wildfire and other public hazard data layered onto each submission.

Built With

Share this project:

Updates

Submission history