Live Β· AI-Governed Insurance Shopping

An insurance agent
inside a safety harness.

An AI agent that re-shops your home & auto insurance and flags a cheaper switch whenever one's worth making β€” held inside Belay, a safety harness that can never spend, leak, or switch on its own.

Reshopr is the app. Belay is the safety harness it runs inside.

10 declared guardrails 5 pass/fail checkpoints 13 typed alarms 3 interchangeable workers
In plain terms

Reshopr & Belay.

One is the product. The other is the safety frame it runs inside β€” and the reusable part of the engineering.

Reshopr Β· the product

The AI that shops for you

An AI agent that re-shops your home & auto insurance β€” reading your policy, drafting carrier outreach for you to send, comparing replies β€” and flags a cheaper switch whenever one's worth making.

It does the legwork a good broker would, run continuously, for you.

Belay Β· the safety harness

The frame it can't break out of

A fixed harness the AI worker lives inside. It enforces the lines the agent can never cross β€” never spend, never leak, never switch without a human β€” no matter how the AI behaves.

Named for the climbing system that lets a climber move freely while catching every fall before it can do harm. Swap the AI brain; the guarantees stay.

The problem

Capability is here. Containment isn't.

AI agents that act β€” sending email, comparing options, moving money β€” are arriving faster than the controls to trust them.

An unsupervised agent could

  • βœ• Bind a policy you never approved
  • βœ• Leak your DOB and license number
  • βœ• Switch you to cheaper-but-worse coverage
  • βœ• Spam carriers on a predictable cadence
  • βœ• Freeze on a login screen and guess

Belay guarantees instead

  • βœ“ Never binds, buys, or switches alone
  • βœ“ PII stripped before anything leaves
  • βœ“ Coverage parity gated, savings threshold enforced
  • βœ“ Send caps + jittered re-contact cadence
  • βœ“ Stuck? It routes to a human, never guesses
The approach Β· Belay (harness.py)

Swap the brain. Keep the guarantees.

Belay separates the worker β€” the AI doing the shopping β€” from a fixed harness that enforces safety no matter how the AI behaves. Four pillars, each its own module.

Guardrails

guardrails.py
  • Allow-listed carriers only
  • Never bind / buy
  • Never switch without a human click
  • PII stripped pre-send
  • Send caps + jittered cadence
  • Human-voice check on outbound

Checkpoints

checkpoints.py Β· store.py
  • Quote completeness
  • Coverage parity
  • Savings threshold
  • Valuation sanity
  • PASS / FAIL persisted
  • Replay & resume

Material handling

material.py
  • Reads policies + replies end-to-end
  • Brand-agnostic
  • Errors-as-data, never crashes
  • Flagged, reviewable defaults
  • Independent valuation refs

Alarms

alarms.py
  • Named, typed events
  • Severity HI / MED / LO
  • Recommended action attached
  • Printed + persisted
  • Every switch β†’ await approval
Swappable worker Β· agents.py

One interface. Three workers.

The injected agent implements five methods β€” plan, act, react_to_checkpoint_failure, respond, decide. Dropping in a different worker needs zero harness changes.

llm

A real AI worker driving the decisions.

rule_based

Deterministic logic, no model in the loop.

conservative

Caution-first defaults under the same rules.

proven live

Same harness, different worker, different recommendation β€” shown in the demo.

One run, step by step

How a single shop flows through Belay.

1MaterialPull independent market values β€” home by ZIP, auto by VIN β€” so a wild premium can be flagged later.
2WorkerThe injected agent drafts a quote-request email per carrier for each product line β€” nothing is sent yet.
3GuardrailsPre-send gate on the draft β€” allow-list, cadence, send-cap, PII strip, human-voice. Any failure raises an alarm and skips it.
4HumanBy default, you review the draft, edit it if you want, and click Send yourself β€” nothing goes out without that click. Opted into auto-send (see below)? Reshopr sends it the moment it's ready instead.
5MaterialSent for real through your own Gmail (OAuth). The reply lands in your inbox on its own; Reshopr doesn't look until asked.
6HumanYou click β€œCheck for reply” β€” or, if you've opted into the background checker, it polls roughly every 5 minutes on its own and emails you the moment one needs you, then follows up again at 48 and 72 hours if it's still sitting unactioned. Either way, Reshopr only ever searches Gmail on that trigger, never continuously.
7MaterialA portal-style reply routes straight to β€œNeeds you” (get the price yourself); a free-text reply gets a best-effort premium/period guess β€” never trusted outright.
8HumanYou confirm β€” or correct β€” the guessed number before anything scores it. Nothing here is auto-accepted.
9CheckpointsGate the confirmed quote β€” completeness, parity, valuation sanity. A parity FAIL is handed back to the worker: drop the quote, or draft ONE bounded follow-up naming exactly which limits don't match β€” never a second round, and it's a real draft handled exactly like step 4. Shares that same one-follow-up slot with the silence nudge below (Store.has_followup_draft) β€” whichever fires first, a mismatch or a few quiet business days, is the only follow-up a carrier/line ever gets.
10CompareRank incumbent vs. candidates β€” decision-free, pure facts.
11CheckpointSavings threshold β€” is the best quote enough cheaper to be worth switching?
12Guardrail + HumanRecommend β€” but every switch is downgraded to await_human_approval. The agent can never switch on its own, whether auto-send (steps 4 & 9) is on or off; your β€œApprove this switch” click is what actually acts on it. /resume also carries a portal-price confirmation back into the same run.

Auto-send (opt-in, per account, off by default): turns steps 4 and 9 β€” and the silence nudge below β€” from "drafted, waiting for your click" into "sent the moment it's ready," through POST /account/auto-send. It never touches step 8 (you still confirm a carrier's actual quoted numbers yourself β€” free text can't be trusted outright) or step 12 (a switch is never automatic, structurally, regardless of this setting β€” see the never_bind_or_purchase guardrail above).

Staying on it, over time Β· main.py

Three background sweeps. None ever send without you β€” unless you've said so.

Everything above is one run. These decide when a new one starts, when you're told something needs you, and when a silent carrier gets followed up with β€” all three draft-or-notify only, sending on their own only for an account that's opted into auto-send.

_poll_replies_once

Reply checker

Checks every sent-and-unresolved draft roughly every 5 minutes and emails you the moment one needs a look β€” a reply to confirm, or a portal redirect. The manual β€œCheck for reply” button works exactly the same either way. Still sitting untouched? A follow-up email goes out at 48 hours, and again at 72.

_nudge_silent_drafts_once

Silence nudge

Every sweep, checks how long each sent draft has gone without a reply β€” once it crosses NUDGE_AFTER_BUSINESS_DAYS (3 by default, Mon–Fri only, no holiday calendar), drafts ONE polite check-in through the exact same round-2 slot a coverage-mismatch reask uses (Store.has_followup_draft), so a carrier can never get both. Drafted for you to review by default; sent immediately if auto-send is on.

_auto_shop_once

Re-shop scheduler

Kicks off a fresh cycle on your saved profile β€” drafts only, same review-and-send-it-yourself rule as any run. Anchored to your policy renewal dates (30 days before, by default) when you've set them; falls back to a plain 30-day rolling interval otherwise. Stays silent unless it actually found something worth reviewing.

The bet

The winning insurance-AI product isn't a smarter shopper β€” it's the trustworthy frame any shopper can safely run inside. Reshopr is that product. Belay is that frame β€” built, and live today.