AgentOS Scope Out
BlogChangelogFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist
AgentOS Scope OutJoin the waitlist
AgentOS Scope Out
HomeBlogChangelogFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist
AgentOS Scope Out
BlogChangelogFAQFeaturesHow it worksIntegrationsSecurityUse cases
TermsPrivacyData Processing

© 2026 AgentOS Scope Out

SECURITY / ACCESS CONTROLS

Internal tooling built to stay internal

Scope Out is accessible only to explicitly approved team members. There is no public sign-up, no discovery surface, and no path in for uninvited users. Here is exactly what controls that.

ACCESS GATE / AUTH-01

Two names on the list. Everyone else is turned away.

Sign-in is gated by a hardcoded email allowlist. Any authentication attempt from an address that isn't on the list is rejected at the server — not just hidden in the UI — with a clear 'access restricted' response. There is no public sign-up route, no invitation-request flow, and no way to enumerate accounts. The allowlist is the primary and only key.

  • Server-side allowlist check on every authentication attempt

  • Rejected attempts receive an explicit 'access restricted' message

  • No public sign-up — the root URL redirects straight to sign-in

  • Middleware enforces the redirect on every request before any page renders

Crawl dashboard — visible only after authenticated access
AUTH-GATESign-in attempt rejected — email not on allowlistnow
CRAWL-WORKERrobots.txt fetched and parsed before crawl start — domain permitted0.2s
RATE-LIMITERRequest throttled to 1 req/sec — back-off applied on 4291.1s
RETENTION-JOBRaw scrape data purge triggered — records older than 90 days removed03:00
MIDDLEWAREUnauthenticated request to /dashboard — redirected to /sign-innow
SCRAPE-GUARDRe-scrape blocked — last_scraped_at within 7-day minimum interval5.3s
AUTH-GATEAllowlist check passed — session issued for approved usernow
AUTH-GATESign-in attempt rejected — email not on allowlistnow
CRAWL-WORKERrobots.txt fetched and parsed before crawl start — domain permitted0.2s
RATE-LIMITERRequest throttled to 1 req/sec — back-off applied on 4291.1s
RETENTION-JOBRaw scrape data purge triggered — records older than 90 days removed03:00
MIDDLEWAREUnauthenticated request to /dashboard — redirected to /sign-innow
SCRAPE-GUARDRe-scrape blocked — last_scraped_at within 7-day minimum interval5.3s
AUTH-GATEAllowlist check passed — session issued for approved usernow
AUTH-GATESign-in attempt rejected — email not on allowlistnow
CRAWL-WORKERrobots.txt fetched and parsed before crawl start — domain permitted0.2s
RATE-LIMITERRequest throttled to 1 req/sec — back-off applied on 4291.1s
RETENTION-JOBRaw scrape data purge triggered — records older than 90 days removed03:00
MIDDLEWAREUnauthenticated request to /dashboard — redirected to /sign-innow
SCRAPE-GUARDRe-scrape blocked — last_scraped_at within 7-day minimum interval5.3s
AUTH-GATEAllowlist check passed — session issued for approved usernow
AUTH-GATESign-in attempt rejected — email not on allowlistnow
CRAWL-WORKERrobots.txt fetched and parsed before crawl start — domain permitted0.2s
RATE-LIMITERRequest throttled to 1 req/sec — back-off applied on 4291.1s
RETENTION-JOBRaw scrape data purge triggered — records older than 90 days removed03:00
MIDDLEWAREUnauthenticated request to /dashboard — redirected to /sign-innow
SCRAPE-GUARDRe-scrape blocked — last_scraped_at within 7-day minimum interval5.3s
AUTH-GATEAllowlist check passed — session issued for approved usernow

HONEST LIMITS / TRUST-05

What we can say and what we can't

Scope Out is an internal intelligence tool, not a regulated data processor or enterprise SaaS product. The controls that exist are real and enforced. We do not claim SOC 2, ISO 27001, GDPR certification, or any third-party audit we haven't completed. If your team needs specifics not described here, email us at sf-core-org-support-agentos-scope-out@saas-factory.ai and we will give you a straight answer.

ACCESS RESTRICTED — BY DESIGN

Questions about access or data handling?

Scope Out is built for a small, known team. If something about the controls above isn't clear, reach out directly at sf-core-org-support-agentos-scope-out@saas-factory.ai. We will give you a plain answer, not a sales pitch.

Email the team

CONTROLS / ACTIVE

What the platform actually enforces

Allowlist authentication

Authentication is checked against a hardcoded approved-email list on every sign-in. No match — no access, regardless of password correctness.

Redirect-first routing

Authenticated users land on the dashboard. Unauthenticated requests are redirected to sign-in before any application data is exposed. Middleware handles this on every route.

DATA HANDLING / CRAWL-02

Crawlers that know their limits

Every web crawl Scope Out performs operates within a compliance layer: it reads and respects robots.txt before touching any domain, identifies itself with a declared user-agent, defaults to a 1 request/second rate limit, and backs off exponentially on 429 or 503 responses. Blocked domains are logged to the crawl record — not silently skipped.

  • robots.txt parsed and honoured before every crawl begins

  • Declared user-agent on all requests — no impersonation

  • Configurable per-domain rate limits (default: 1 req/sec)

DATA RETENTION / POLICY-03

Scraped data doesn't live forever

Raw scrape data has a configurable retention period (default: 90 days), after which it is purged. A minimum re-scrape interval (default: 7 days) prevents redundant re-collection. These are not UI labels — they are enforced in the background job layer via a last_scraped_at guard before any scrape job runs.

90-day default retention

Raw scraped product data is purged after 90 days by default. Admins can adjust the window in settings.

OBSERVABILITY / OPS-04

Every crawl is a logged, auditable record

Crawl history tracks every run: which directory URL was crawled, when it ran, how many products were discovered and scored, how long it took, and whether it completed, failed, or ran partially. Scrape failures surface the actual error — status code, message, robots.txt block — not a silent gap in the data.

  • Full crawl history with timestamp, URL, product counts and status

  • Scrape errors show status code, error message and block reason

  • Failed products surfaced in dashboard with retry option

  • AI cost tracked per crawl run with configurable spend alerts

FAQ / SECURITY

Common questions

No public discovery surface

There is no marketing funnel, no landing page, and no sign-up form. The product cannot be found or trialled by anyone outside the approved list.

Exponential back-off on rate-limit and server-error responses

  • Blocked domains logged with status code and reason to the crawl run record

  • Background jobs panel showing crawl pipeline status

    7-day re-scrape guard

    A last_scraped_at check prevents redundant data collection within the minimum interval — enforced at the job layer, not just the UI.

    Structured data model

    All collected data is stored in typed, indexed Drizzle schema tables with clear separation between raw scrapes, scores, and generated dossiers.

  • Dossier version history records every re-score — changes are traceable

  • Jobs dashboard showing background task status and history
    Kerfuffle is the primary supported source, with purpose-built extraction rules for its listing structure. That said, the source directory management settings let you add other directory URLs beyond Kerfuffle — G2 PropTech and GetApp PropTech are named expansion targets. Each directory gets its own crawl frequency (one-off, weekly, or monthly), and the scraper plugin architecture lets site-specific extraction rules be defined for new high-value domains. If a site isn't yet in the plugin registry, the crawler falls back to generic heuristics.
    No. Every composite score is built from four transparent, separately reported dimensions: replicability (how buildable is this with our stack, 1–10), market demand (review volume, recency, and sentiment ratio, 1–10), revenue potential (pricing tier crossed against PropTech category market size, 1–10), and competitive gap (frequency and severity of recurring negative review themes, 1–10). Each dimension has a written LLM rationale alongside its number, and you control the weighting of each dimension from the settings page. Change the weights and the entire product table re-ranks in the background — no AI re-run required.
    Access is restricted to a hardcoded allowlist of approved email addresses. Any sign-in attempt from an address not on that list is rejected with an explicit 'access restricted' message. There is no public sign-up flow. The root URL routes unauthenticated visitors straight to the sign-in page — there is no public-facing marketing funnel to stumble through. It is a deliberately closed internal tool.
    A full dossier includes: all four scored dimensions with written rationales, raw review samples, pricing signals normalised to a standard tier (free through enterprise), a feature list extracted from scraping, an AI-drafted mission statement for a competing SaaS, a prioritised 10-item suggested feature list shaped by market gaps, and a competitor weakness analysis drawn from negative review patterns. Each of those three text artefacts has a copy-to-clipboard button that outputs formatted Markdown. You can also export the entire dossier as a Markdown file or PDF from the same page. Dossier version history is retained every time a product is re-scored, so you can track how the opportunity has shifted over time.
    Several signals surface movement automatically. Monitored directories run a weekly re-crawl and flag any newly discovered products with a 'new since last crawl' badge on the dashboard. When a product's composite score moves more than 1.5 points between runs, a directional indicator (▲ or ▼) appears on its dashboard row. If a shortlisted product drops significantly, you can opt into an in-app notification. A weekly email digest also lands in your inbox summarising the top new products discovered, the top scorers, and any products with notable score swings — configurable per user in notification settings.
    Yes. When starting a crawl you choose the depth: 'Skim only' discovers listings and pulls surface data in seconds with minimal AI cost, while 'Full analysis' runs the complete scrape, score, and dossier pipeline. The typical workflow is to skim first to gauge directory size, then review the auto-flagged top candidates before confirming the expensive deep-analysis run. AI token usage and estimated cost are tracked per crawl run and broken down by pipeline stage on the run detail page. Cumulative monthly spend is logged, and you can set a cost threshold — the default is $5 per run — that triggers an in-app alert if a single run exceeds it.