AI Site Grade

oportun.com — AI Site Grade

Oportun's entire public-facing website is blocked by a Cloudflare JS challenge wall, making it invisible to all AI crawlers and browsers alike.

Oportun's main domain returns HTTP 403 with a Cloudflare challenge to every user-agent, preventing any AI crawler from accessing content, despite having domain verification tokens for OpenAI and Perplexity.

Findings
12
Evidence checks
40
Completed
30 May 2026

Analysis

Oportun's entire public-facing website is invisible to every AI crawler — and every browser too.

The main domain oportun.com returns a Cloudflare JS challenge wall (HTTP 403) to all user-agents tested — GPTBot, ClaudeBot, PerplexityBot, Google-Extended, OAI-SearchBot, Applebot-Extended, Bytespider, and even a standard browser. No bot or browser receives a single byte of real page content. The robots.txt and llms.txt endpoints also return the same Cloudflare challenge page. The site is a WordPress installation (/wp-content/ paths visible in archived assets) running behind Cloudflare's "Managed Challenge" mode, which blocks all programmatic access before any content is served.

Crawler Access

Every AI crawler tested receives HTTP 403 with a Cloudflare JS challenge shell (~5.7 KB of challenge script, zero content). The compare_bot_access result is uniform: all 11 user-agents (including browser baseline) are blocked identically. No robots.txt rules exist because the file itself is unreachable — the server returns the same challenge page rather than a text file. The llms.txt endpoint also 404s in practice (returns the Cloudflare wall). DNS records confirm Cloudflare nameservers (max.ns.cloudflare.com, rita.ns.cloudflare.com) and IPs in Cloudflare's range. Paradoxically, the DNS TXT records include openai-domain-verification and perplexity-ai-domain-verification tokens, indicating Oportun proactively verified the domain with these AI platforms — but the verification is useless since the site blocks their crawlers at the edge.

Cold-Knowledge Gap

The LLM knows Oportun cold as a CDFI-certified lender serving underserved communities with $300–$10,000 personal loans, founded in 2005 as Progreso Financiero, rebranded in 2016, originated over $15 billion in loans, and settled a CFPB action in 2024 for $3.5 million over deceptive APR disclosures. The live site (via Wayback archive) presents a different emphasis: "9 of 10 members would refer friends," "80,000 5-star reviews," "A+ BBB rating," "#1 savings app of 2024 by Bankrate," and "saved $2.4 billion in interest and fees." The CFPB settlement is entirely absent from the site's messaging — a significant reputational gap that AI engines already know about but the site does not address.

Schema Posture

The archived homepage and subpages contain basic WebPage, WebSite, Organization, and BreadcrumbList JSON-LD — but no Product, LoanOrCredit, FinancialProduct, or FAQPage schema. Given that the site sells personal loans, credit cards, and savings products, the absence of LoanOrCredit schema (with annualPercentageRate, loanTerm, loanRepaymentForm) is a missed structured-data signal. The investor subdomain (investor.oportun.com) is the only accessible section and correctly uses Corporation schema with ticker symbol OPRT.

External Signals

The investor subdomain is fully accessible and well-maintained, showing Q1 2026 results, six consecutive GAAP-profitable quarters, and $22.2 billion in cumulative credit originated. The main site's FAQ section (visible only via Wayback) contains answer-format content — questions about documentation, cosigners, and prequalification — that would be ideal for AI answer surfaces, but none of it is crawlable. The financial education blog has 30+ articles on loans, credit, and savings that could serve as AI training material, all locked behind the Cloudflare wall.

Findings

  1. Cloudflare JS challenge wall blocks all AI crawlers and browsers High

    The main domain oportun.com returns HTTP 403 with a Cloudflare challenge page to every tested user-agent, including GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and standard browsers. No real content is served to any crawler.

    What to change: Disable Cloudflare's Managed Challenge mode for the main domain and allow AI crawlers through via allowlisting or a dedicated bypass.

  2. robots.txt is unreachable, returning Cloudflare challenge instead of rules High

    The robots.txt endpoint returns the same Cloudflare challenge page as the homepage, making it impossible for crawlers to read any directives. No AI bot rules exist.

    What to change: Ensure robots.txt is served as a plain text file without Cloudflare challenge, and include directives for AI crawlers.

  3. llms.txt endpoint returns 403/not found Medium

    The llms.txt endpoint is inaccessible, returning a Cloudflare challenge page. No AI-specific guidance file exists.

    What to change: Create and serve an llms.txt file with AI-friendly guidance, ensuring it is not blocked by Cloudflare.

  4. Domain verification tokens for OpenAI and Perplexity are present but ineffective High

    DNS TXT records include openai-domain-verification and perplexity-ai-domain-verification tokens, indicating proactive verification. However, the Cloudflare wall blocks the actual crawlers, rendering the tokens useless.

    What to change: Remove the Cloudflare challenge for verified AI crawlers or use Cloudflare's bot management to allow them through.

  5. Missing LoanOrCredit and FinancialProduct schema on loan pages Medium

    Archived pages for personal loans lack LoanOrCredit or FinancialProduct structured data, missing key properties like annualPercentageRate, loanTerm, and loanRepaymentForm. This reduces visibility in AI-driven search results.

    What to change: Add LoanOrCredit schema with appropriate properties to all loan product pages.

  6. FAQ content lacks FAQPage schema Medium

    The FAQ section contains question-and-answer content but does not use FAQPage structured data, missing an opportunity for AI answer surfaces.

    What to change: Add FAQPage schema to the FAQ page and any other pages with Q&A content.

  7. CFPB settlement absent from site messaging Medium

    The site's messaging highlights positive reviews and awards but omits any mention of the $3.5 million CFPB settlement over deceptive APR disclosures. AI engines already know about this settlement, creating a reputational gap.

    What to change: Add a transparent disclosure or page addressing the CFPB settlement to align with AI knowledge.

  8. Financial education blog content is inaccessible to AI crawlers Medium

    The financial education blog contains over 30 articles on loans, credit, and savings that could serve as AI training material, but all are locked behind the Cloudflare wall.

    What to change: Allow AI crawlers to access the blog section to improve AI visibility and training data.

  9. Sitemap.xml is inaccessible High

    The sitemap.xml endpoint returns a Cloudflare challenge, preventing crawlers from discovering the site's URL structure.

    What to change: Serve sitemap.xml as a plain XML file without Cloudflare challenge.

  10. Investor and help subdomains are accessible, main site is not Medium

    The investor.oportun.com and help.oportun.com subdomains are fully accessible and return content, while the main domain is blocked. This inconsistency suggests selective Cloudflare configuration.

    What to change: Apply the same access policy to the main domain as the subdomains, or ensure AI crawlers are allowed on the main domain.

  11. Savings product page lacks FinancialProduct schema Low

    The savings page (archived) does not include FinancialProduct schema, missing structured data for interest rates and terms.

    What to change: Add FinancialProduct schema to the savings page with relevant properties.

  12. No AI-specific content or guidance on the site Low

    The site does not provide any AI-specific content, such as an AI FAQ or guidance for AI crawlers, missing an opportunity to shape AI-generated answers.

    What to change: Create an AI FAQ page or add AI-specific guidance in llms.txt.

What's working

  • Domain verified with OpenAI and Perplexity via DNS tokens — DNS TXT records include openai-domain-verification and perplexity-ai-domain-verification tokens, showing proactive engagement with AI platforms.
  • Investor subdomain is fully accessible with Corporation schema — The investor.oportun.com subdomain is accessible, contains up-to-date financial results, and uses Corporation schema with ticker symbol OPRT.
  • Basic JSON-LD schema (WebPage, Organization) present on archived pages — Archived pages include WebPage, WebSite, Organization, and BreadcrumbList JSON-LD, providing foundational structured data.
  • Positive reviews and awards prominently featured on site — The site highlights '80,000 5-star reviews', 'A+ BBB rating', and '#1 savings app of 2024 by Bankrate', which are strong social proof signals.
  • Financial education blog with 30+ articles exists — The site has a financial education section with articles on loans, credit, and savings, which could be valuable AI training material if accessible.
  • Help subdomain is accessible and serves content — The help.oportun.com subdomain is accessible, providing customer service portal content.
  • Wayback archives reveal rich content on main pages — Archived snapshots show detailed content on homepage, personal loans, and financial education pages, indicating the site has substantial text content.
  • CDFI certification and mission-driven lending focus — Oportun is a CDFI-certified lender serving underserved communities, a positive differentiator that AI engines recognize.

Track oportun.com across AI search

This is one snapshot. Open the interactive report to inspect evidence, or grade another site free.

Open this AI Site Grade Grade another site Track your brand