Inspiration

According to liquidation centre, up to 43,000 construction firms face closure in a single calendar year due to cash flow stress, compounded by unrecovered funds. Profitable construction businesses die. A subcontractor finishes the work, invoices, and waits. A mechanic's lien is supposed to be a weapon that clouds the property title until payment comes, but it has deadlines that expire monthly and silently. Miss the 15th of the wrong month and that month's money is legally gone. US construction loses roughly $270B a year to payment delays, and the paperwork stamina the law demands is exactly what a two-person concrete crew does not have. So I built them a back office that never forgets.

What it does

LienDrop is a fleet of eight AI agents wrapped around one deterministic legal engine. From day one of every job it computes every deadline under Texas Property Code Chapter 53, serves the statutory fund-trapping notices by certified mail with proof of service, keeps an evidence file where every fact carries the sha256 of its source document, and prepares lien affidavits that a human signs before a notary, because the law requires a human there and the product builds that requirement in instead of around it. When payment lands, it selects the lawful waiver form and records the release. Every action runs on rails with legal force. Emails can be ignored; liens cannot.

Demo versus production: the terminal commands in the demo exist only to trigger each beat on cue. In production they disappear into integrations: billed and paid amounts arrive from a billing sync (every invoice raises dollars-at-risk, every payment lowers it); the heartbeat ticks daily on Cloud Scheduler and protective actions like monthly notices auto-send as windows open, with per-project opt-out; the certified-mail and county-recording simulators sit behind the same adapter interfaces real vendors plug into, so production is an endpoint swap, not a rewrite; documents arrive as phone uploads, with low-confidence extractions held for human review rather than guessed. The one step that never automates is the signature. The daily user experience: connect billing, upload paperwork as it arrives, show up when something needs your name.

The system has eight agents Intake: reads the new job's contract, sets it up, and decides what kind of project it is. Wrong kinds (homestead, government jobs) get refused with an explanation, not mishandled. Veil: figures out who must legally receive the paperwork. The company that signed your contract often isn't the property's legal owner, and serving the wrong one voids your lien. It keeps re-checking, because owners change. Docket: the clock. Ticks every day, watches every deadline on every job, updates each right's status. Uses no AI at all, on purpose, because a hallucinated deadline is a lost lien claim. Evidence: the proof file. Ties every unpaid dollar to the month it was earned and the document behind it. Notice: writes the monthly legal notice on the state's official form and sends it by certified mail. Validity: the checker. Assumes everyone else made a mistake, re-verifies every number and name independently, and nothing can be sent without its approval token. Filing: builds the lien affidavit, stops for your signature, files it with the county clerk, and handles the clerk's rejections without ever filing twice. Leverage & Release: after you're paid: prepares the correct waiver form, releases the lien. Its Waiver Guardian also reads waivers a contractor sends you and flags rights-killing language before you sign.

How we built it

Two halves, deliberately unequal. The deterministic core decides everything with legal consequence: a rules engine encoding the statute as data, a rights state machine, and a CI lint that fails the build if date arithmetic appears anywhere else, because the language model never computes a legal deadline. The model half reads, drafts, and doubts: eight ADK agents on Vertex AI Agent Engine reasoning with Gemini, including an adversarial Validity Agent whose approval is an HMAC token bound to the exact bytes it approved; change one byte and the approval dies, and dispatch without a token is structurally impossible.

I had an orchestrator model that plans and rules but is forbidden from writing production code, an author model that writes everything, and a verifier and tester from a different model line that attack the code and the running system. Nothing merged without independent green. Findings that failed twice escalated to me. Every milestone produced a written report. Three weeks produced 5,956 tests, and a certified freeze with zero failures.

Challenges we ran into

The statute fought the spec and won, five times: "must withhold" became "may withhold, at the owner's peril"; the retainage rule most websites describe turned out to be pre-2022 law; requiring delivery proof would have handed mail-dodging owners a veto the legislature deliberately removed; an idempotency formula was proven broken when a corrected letter came out byte-identical to the bounced one; and the pro-tier model the plan assumed did not exist on Vertex. County clerks and carriers offer no sandboxes, so I built simulators as adversaries: ten real rejection codes, a two-simulated-day decision delay, and an audit of the same service ledger the mail rail writes. Acceptance means the agents produced a valid instrument, and the demo discloses the simulation in one sentence.

Accomplishments that we're proud of

A lien recorded and released end to end on live Google Cloud infrastructure. An adversarial reviewer that once refused the system's own template, correctly. A measured safety net: when a raw key leaked into a sworn field, we tested whether the model check would catch it, found zero catches in twelve, and made the deterministic renderer the guarantee. Error messages held to a truthfulness standard proven by a differential test over four hundred thousand values. And at submission time, the orchestrator struck a bonus claim for a feature early plans listed but the build never shipped; the honesty machinery audited its own scorecard.

What we learned

Multi-agent systems earn their complexity only where interests genuinely conflict; a pipeline wants tools, not a committee. The most valuable agent is the one whose job is to say no. Outside-in testing against real deployment found every bug that mattered, including fresh containers resetting simulated time.

What's next for LienDrop

Retainage-only release staging (designed, deliberately deferred past the freeze), real mail and e-recording vendors behind the existing adapters, billing-sync ingestion, and more jurisdictions: the statute lives in a versioned data file, so a new state is configuration plus verification, not a rewrite.

Built With

  • cloud-firestore
  • cloud-scheduler
  • cloud-storage
  • fastapi
  • gemini
  • google-adk
  • google-cloud-run
  • htmx
  • model-armor
  • pytest
  • python
  • secret-manager
  • vertex-ai
  • vertex-ai-agent-engine
Share this project:

Updates

Submission history