Inspiration

Every subcontractor on a construction project works under a qualifying agent's state license, and somebody has to keep those licenses verified for the length of the build. That is not a one time task at onboarding. It is a check a real person repeats by hand, on a government portal, thirty names at a time, month after month, for fourteen months.

It is exactly the kind of work that gets skipped. Not through carelessness, but because it is long, repetitive, and almost always returns nothing. So it slips to quarterly, then to whenever someone remembers.

Meanwhile a license goes delinquent in month seven. Nobody is notified. The subcontractor keeps working and keeps getting paid, and the exposure lands on the general contractor: contracts with an unlicensed contractor are void and unenforceable, liens cannot be filed, and general liability cover may be voided for work performed in violation of licensing law.

Proto is an agent for the person doing that check. It does not replace their judgement. It does the repetition.

What it does

Proto re-verifies a whole project roster against the live Florida DBPR registry, cross-references county permit activity, ranks by what is genuinely dangerous, and drafts the notice.

The ranking is the point. Real output, live data, nothing seeded:

CRITICAL  3JW CONSTRUCTION, INC.
  CCC1332414, Certified Roofing Contractor
  License status is SUSPENDED (registry reads "Suspended, Active").
  1 permit pulled under this license this year, most recently 2026-02-26.
  action: Stop work and withhold the next draw until the license is reinstated.

ok  24 HR AIR SERVICE INC
  CAC1814637, Certified Air Conditioning Contractor
  5 permits on record, the last 8 months ago. License is in good standing,
  so this is context, not exposure.

Both have open work. Only one is a finding. A calendar reminder knows one date somebody typed in. Proto reads the registry of record.

How I built it

The agent decides how far to dig. It never decides what anything means.

A Strands Agent chooses which sources to consult per subcontractor: a license current for another two years needs nothing further, a suspended one needs its permit history, because open work under a dead license is the finding that matters. That judgement saves real requests against a public government service.

What the agent may not do is interpret. Tools write what they found into a facts record, a deterministic engine of pure functions scores it, and a Strands Graph only orders the morning and drafts the letter. A model that misreported a status could not change what Proto reports, only waste a call. A language model narrating its own reasoning about liability is the failure mode this project exists to avoid.

Strands throughout: tool() with Zod schemas, tool and node lifecycle hooks for tracing, a typed Graph for triage to notice, and bounded execution via maxSteps and timeout. Provider agnostic, one environment variable to swap.

Challenges

A long sweep dies. Failing at subcontractor nine and restarting from one means thirty more requests at a government portal to re-learn what was already known, and that is why this check quietly stops being run. So every subcontractor is committed to a run journal the moment it is verified. Kill it mid sweep, press Run again, and it continues from the first unsettled name.

The model is not load bearing. If the provider is down the sweep still runs, reading every source about everyone, which is wasteful and correct, in that order.

What I learned

Where to put the model, and where to keep it out. The interesting agent decision here was not interpretation, it was depth. That is safe to delegate, because being wrong about it only costs a call. Interpretation was not, so it is not.

What's next for Proto

Sources sit behind a small interface, so a new county or a second state is a connector, not a redesign. Insurance certificates and workers' compensation exemptions are next.

Disclosure

This project incorporates pre-existing Florida DBPR license and county permit connector modules authored by me, adapted for this application.

License status and permit activity are public record. The sample roster names licensed businesses only. It is a worked example, not an allegation about any firm's conduct.

Built With

Share this project:

Updates

Submission history