Static prototype · demo data only · no real companies, no live sources, no backend
InnovateXperts AcquiScope

Section 5.2 · hard constraint

Sources and authorisation

Every adapter declares an authorisation basis. The ingest pipeline refuses to run any adapter whose basis is unset, and refuses to enable a public-web adapter until its authorisation record is signed off.

Two adapters are disabled and cannot be enabled from this screen. businessesforsale and daltonsbusiness stay off until docs/sources/AUTHORISATION.md holds a completed, signed-off record for each. The toggle reads the record. It does not accept an override.

Adapter registry

AdapterAuthorisation basisFlagRate limitrobots.txtCacheState
companies_house
app/sources/companies_house.py
official_api SOURCE_COMPANIES_HOUSE_ENABLED=true 600 req / rolling 5 min
token bucket, Retry-After honoured
Not applicable ETag, 24 h TTL Enabled
businessesforsale
app/sources/businessesforsale.py
public_web SOURCE_BUSINESSESFORSALE_ENABLED=false 1 req / 3 s per host Fetched and honoured per request ETag + Last-Modified, 12 h TTL Blocked — record unsigned
daltonsbusiness
app/sources/daltonsbusiness.py
public_web SOURCE_DALTONSBUSINESS_ENABLED=false 1 req / 3 s per host Fetched and honoured per request ETag + Last-Modified, 12 h TTL Blocked — record unsigned
manual
app/sources/manual.py
manual_entry always on Not applicable Not applicable Not applicable Enabled
csv_import
app/sources/csv_import.py
manual_entry always on Not applicable Not applicable Not applicable Enabled

Bases available to an adapter: official_api, commercial_feed, licensed_partnership, written_permission, public_record, public_web, manual_entry. Unset means the pipeline refuses to run.

Enforced in the base class

Rules a public_web adapter cannot opt out of

  • Pages reachable without a login, without a paywall, without defeating bot protection.
  • robots.txt fetched and honoured for the configured user-agent before every request. A disallowed path is skipped and logged.
  • Honest descriptive User-Agent carrying a contact URL.
  • One request per 3 seconds per host, configurable downward only. Retry-After honoured, exponential backoff on 429 and 503.
  • Cache-first with conditional requests. No re-fetch of an unchanged listing inside its TTL.
  • Source URL and fetch timestamp recorded against every ingested field.
  • Ingested listing figures tagged Broker provided — unverified.
  • No CAPTCHA solving, no IP or user-agent rotation, no headless browser to defeat a bot check, no authentication, no members-only or NDA-gated page.
  • A blocked source stops. It is logged to UNAVAILABLE.md and surfaced. It is not retried around.

Live budget

Companies House rate budget

Rolling 5-minute window184 / 600
Environment
COMPANIES_HOUSE_ENV=test
API key
COMPANIES_HOUSE_API_KEY from Infisical present
Last 429
None in this window
Backoff state
Idle
Cache hit rate
72% over the last 500 requests

The budget is client-side. The bucket refuses the request before it leaves the process, so the platform never rides the limit and never relies on a 429 to stop.

docs/sources/AUTHORISATION.md

Template generated by the platform. The operator completes and signs it off.

2 records incomplete
SourceTerms of use URLReviewedReviewerOutcomeConstraints imposed
companies_house developer.company-information.service.gov.uk terms 21 Aug 2026 Operator Signed off Attribution required. 600 req / 5 min. Personal data minimised.
businessesforsale — to complete — Not reviewed
daltonsbusiness — to complete — Not reviewed
Both buttons stay disabled while the record is unsigned. There is no override path in the UI or the API.

docs/sources/UNAVAILABLE.md

Sources that blocked the crawler, or that the platform declined to fetch. Nothing here is retried around.

SourceReasonFirst seenAction
example-broker-aListing detail behind registration. Not fetched.18 Aug 2026Commercial licence enquiry recorded
example-broker-brobots.txt disallows /businesses-for-sale/ for our user-agent.19 Aug 2026Path skipped permanently
example-broker-cBot protection challenge returned on first request. Stopped.20 Aug 2026Written-permission request drafted, not sent

Sources on this list are surfaced to the operator on every search run so a blocked source never quietly disappears from the funnel.

AcquiScope produces analysis and modelling, not regulated investment advice. The source names on this screen are placeholders for the prototype. No source was contacted or fetched to produce this page.