# Ladder — full context ## What Ladder is Ladder is an open, pay-to-rank public board for real websites, products, projects, launches, businesses, portfolios, newsletters, communities, and other public destinations. It is operated by 8StarLabs. Anyone can join when the submitted domain is real, public, understandable, and safe to browse. The product is intentionally transparent: the paid amount is the rank signal, and publication time breaks equal bids. There is no hidden quality score, editorial pay lane, follower count, or public category gate. ## Submission flow 1. A visitor enters a product domain and a whole-dollar bid. 2. The server validates the public URL, safely previews bounded website metadata, resolves the title/description/favicon, and runs eligibility and content screening. 3. The visitor is sent directly to Stripe-hosted Checkout. Stripe collects billing details, payment method details, authentication, and receipt email; Ladder never handles card data. Checkout enables Stripe automatic tax, while account registrations and tax settings remain the operator's responsibility. 4. The Stripe webhook verifies the payment and publishes or updates the listing exactly once. 5. The return page is UX only. It retries briefly while fulfillment becomes visible, then shows a success check/toast, scrolls to the result, and highlights the affected listing. There is no Ladder account, sign-in, listing-image upload, or public category selector. Listing artwork comes from the submitted site's favicon, with an initials fallback. Favicon colors are preserved in light and dark themes; only minimal contrast treatment is added when a transparent mark needs it. ## Ranking rules - Currency is USD. - New bids must be whole-dollar amounts between $5 and $999,999. - Higher successfully paid bids rank above lower bids. - Equal bids are ordered by the earliest `first_published_at`; a deterministic ID breaks an exact timestamp tie. - A different domain can overtake a listing with a bid at least $1 above the target's current bid. The target remains a separate listing. - Entering an existing domain again increases that listing only when the new bid is at least $5 above its current bid. The customer pays only the difference. - A listing keeps its original publication timestamp when its bid increases. - A stale target is rechecked server-side before Checkout. Ladder never silently changes an amount after the visitor has confirmed payment. - A lower later bid never lowers a listing's current bid. - A full or partial Stripe refund removes the associated listing from the public board in v1. Failed or ambiguous refunds keep the listing hidden until reviewed. ## Public listing data Public listing data may include: - rank and current paid bid; - lowercase normalized domain/name; - website description sourced from the public page; - favicon artwork or initials fallback; - publication and last-bid time context; - outbound click total; - factual movement/activity context. Public data never includes payer name, email, billing address, Stripe IDs, card data, claim tokens, detector scores, private moderation notes, or reporter identity. Outbound clicks open the destination in a new tab and increment a simple public count through the server. The public leaderboard shows up to 50 listings per page. The current page is stored in the `page` URL parameter so browser Back and Forward preserve board navigation. ## Payment activity readout The public readout is called **Ladder payment activity**. It is derived from fulfilled Ladder Checkout Sessions that the webhook linked to a published listing, subtracting successful refunds. A paid session that has not been fulfilled is excluded. It does not estimate Stripe fees, taxes, net profit, or future revenue. When both `STRIPE_SECRET_KEY` and an explicitly configured `STRIPE_TEST_SECRET_KEY` can be read, the server combines verified live and test account activity and labels the modes. If Stripe or fulfillment verification cannot be read, the public endpoint returns unavailable rather than a fake or seeded number. The verified launch age is shown when available. ## Safety and moderation Ladder is open, not unmoderated. It does not promote: - pornography, sexual services, or exploitation; - gambling, casinos, sportsbooks, betting, poker rooms, lotteries, or other real-money wagering; - hate, racism, slurs, harassment, threats, or glorification of violence; - malware, phishing, scams, illegal services, impersonation, or doxxing; - scraped pages, link farms, affiliate-only pages, disposable redirects, or misleading destinations; - copied or unauthorized imagery, deceptive claims, or unsafe public content. Automated screening is a first pass. High-confidence prohibited content is blocked; ambiguous or contextual content can go to manual review. The internal policy category is `hate_or_racism`, not a simplistic binary “racism detector.” Public visitors never see matched slurs, classifier scores, or private review notes. ## Analytics and privacy Google Analytics 4 is optional and private. Ladder does not show public visitor counters, PostHog statistics, live traffic dashboards, or invented metrics. Public click totals describe listing outbound clicks only and are not a visitor-tracking product. ## Operations The app uses Next.js, InsForge, Stripe-hosted Checkout, Vercel-compatible hosting, shadcn/ui primitives, Sonner error toasts, and transitions.dev-inspired motion. Stripe webhooks are the payment source of truth. A separate Ladder Slack bot sends the new-listing publication notification to the configured revenue channel after verified fulfillment; local and preview messages are prefixed `[DEV]`. Git push and InsForge deployment are separate. Deployment is explicit through the InsForge CLI unless a trusted CI workflow invokes it. ## Canonical pages - Homepage: https://ladder.8starlabs.com/ - Rules: https://ladder.8starlabs.com/rules - Sitemap: https://ladder.8starlabs.com/sitemap.xml - Robots: https://ladder.8starlabs.com/robots.txt - Public revenue API: https://ladder.8starlabs.com/api/public/revenue - Owner: https://8starlabs.com