What changes at fifty seats
Enterprise is up to 100 reports a day across 50 accounts on one invoice, and at that size the constraint stops being the allowance and becomes method. Fifty people running reports ad hoc produces fifty private folders. The same fifty running them through a shared habit produces an institutional record of what the brokerage knew, and when.
Three surfaces, and what each is for
The app, for the person in front of a client
Interactive, forwardable, and the only surface with the assistant on it. This is where an agent works.
Claude over MCP, for the question that has not been designed for
Machine access mints a key per seat, off by default, which lets Claude run this account's reports under the same allowance and the same meter. It suits the open-ended question — look at these six addresses and tell me which have open permits — where writing a script would take longer than asking.
The REST API, for the thing you do every week
Documented and testable at scantheblock.com/docs, with an OpenAPI spec you can import into Postman or generate a client from. JSON natively, XML on request with format=xml for systems whose only door in is an XML parser. Use it for the recurring job: nightly runs over a watch list, enrichment into a CRM, a pre-listing check fired by a pipeline.
Patterns that work at this scale
Run the pipeline, not the property
The highest-value automation is not one address, it is the list you already maintain: active listings, pending deals, a farm territory. A nightly job over that list surfaces the open permit that appeared yesterday, and does it before a client asks.
Attach the report to the file at intake
Making a report part of taking a listing, rather than a thing an agent remembers to do, is what turns this from a tool into a record. It also means the PDF exists at the moment somebody later wishes it did.
Watch the allowance by the day, not the month
A daily ceiling behaves differently from a monthly pool: a heavy Tuesday costs nothing on Wednesday. Nobody needs to ration, and nobody needs to ask permission — the desk simply cannot overspend the month in a week.
Use labels as the join key
Labels are free text and they are the cheapest way to tie a report to a deal, a client or a territory. The history exports as CSV or JSON, so a labeled history reconciles against your own systems without an integration.
Keeping the record defensible
At brokerage scale the value of the audit trail eventually exceeds the value of any single report. Three things make it hold up:
- Every report is stamped. What was run, when, by whom, and under which version of the terms the reader accepted. If somebody disputes what was known in March, that is answerable.
- The brokerage's admin sees everything. Every report, who ran it and when, and the file itself. Everyone else sees only their own — say that to your agents plainly rather than letting them find out.
- Nothing is scored. A document that never characterizes an area is a document your agents can forward without creating a Fair Housing exposure, and without you having to review it first.
The machinery, briefly
Keys
A key is a seat with the powers stripped: never a super admin, never the plan's admin, and re-checked against the seat, the company and the plan at every use — so removing somebody revokes their key with them. Keys are shown once and stored only as a hash; losing one means switching the toggle off and on, which mints a fresh one and kills the old.
Rate limits
Six report runs a minute per key, one at a time, a hundred a day. Over the limit returns 429 with a Retry-After header — honor it rather than retrying immediately.
What to cache on your side
Nothing, mostly. Re-running an address the company already ran is free and returns the current record, so a cache of your own mainly risks serving a stale permit. The exception is a display you refresh constantly, where holding the payload for a few minutes is polite.
Failure behavior
A report is assembled from many public sources and any one of them can be slow. Rather than fail, the report names which sources were unreachable while it ran — so a thin section is visibly a gap rather than silently an absence. Check that field before treating an empty section as an empty record.
Getting people on the plan
All 50 accounts use the brokerage's own email domain — a shared plan is one company, and the domain is what makes it one company rather than several people splitting an invoice. Send the list to hello@scantheblock.com and we will set them up; there is no password to distribute, because sign-in is a link sent to the address.