Methodology & Trust

How Portship produces what you see

Portship turns raw builder deployment URLs into clean, branded links and a public portfolio. The numbers and signals on those pages — live status, screenshots, visit counts, geography, app categories — are produced by real, documented methods. This page explains exactly how each one works, in plain language, with honest sourcing and no invented metrics.

A living document. We update it whenever the methods behind these signals change.

1. Live route verification

When you wrap a deployment, your app keeps running wherever you built it — Replit, Lovable, Bolt, v0, and the rest. Portship sits in front of it as a proxy; we never copy, host, or modify your deployment.

To confirm a branded route actually works, Portship fetches your upstream URL server-side with a real-browser User-Agent and reads the response. From that response we:

This probe is read-only and time-bounded: it never changes any of your data, never affects visitor traffic, and aborts if your upstream doesn't respond within a few seconds (a common sign that a free deployment is cold-starting). If a check can't be completed, we say so instead of showing a falsely confident result.

Separately, Portship runs a builder-platform status page that reflects the health of the hosting platforms our users deploy on, so a widespread outage is visible rather than mistaken for a problem with your link.

What we don't claim: a successful probe means your upstream responded correctly at that moment. It is not a guarantee of uptime, and it does not test every page or interaction inside your app.

2. Screenshots: how we capture and refresh them

The preview image on each portfolio tile is a screenshot of your live page, not a stored copy of your app. Captures are rendered at a standard desktop viewport (1280×800) and stored as JPEG thumbnails, then served through Portship's own proxy at /p/{handle}/{slug}.jpg so the underlying capture URL is never exposed.

How a capture is produced

Portship requests the screenshot from a third-party rendering service (Microlink) that loads your public page in a browser and returns the rendered image. We cache the result so repeat visitors don't trigger a fresh render every time, and we re-capture when you change the route so the thumbnail keeps pace with your work.

Because captures come from your publicly reachable page, anything behind a login or not yet deployed won't appear. If a capture fails, the tile falls back to a clean placeholder rather than a broken image.

3. Visit & geography analytics

Every branded link carries built-in visit analytics. The counts you see are produced from server-side visit events recorded as traffic passes through the proxy — there is no third-party analytics tag injected into your app.

Visit counts are private to you. They appear only in your own dashboard — never on your public portfolio, and never in the public discovery directory. Visitors see your work and a simple live indicator, not your traffic numbers.

4. What “Live now” means

The “Live now” figure in your dashboard counts recent visit events across all your links within the last five minutes. It is intentionally honest about its limits:

We describe it this way deliberately. A “live visitors” number that silently counted raw events would overstate reality; naming it accurately keeps the signal trustworthy.

5. App-category classification

To power the discovery directory and aggregate market view, Portship classifies each public project into a single category — for example Developer Tool, E-commerce, Creative/Portfolio, or Education — from a fixed list of categories.

The classification is generated by an AI model (Anthropic's Claude) using only the project's label and slug — the short, public descriptors you choose. No private account data is used. If the model is unavailable or returns something outside the known list, the project is simply filed under Other; classification never blocks a project from working or appearing.

A category is a best-effort label, not an authoritative judgment about your app. You always control the label and slug the classifier reads from.

6. Data freshness & caching

Different signals refresh on different cadences, chosen to balance accuracy against load:

7. Privacy & data integrity

Trust is the product, so the boundaries are firm:

For the legal terms that govern all of the above, see our Terms of Service. Questions about any method on this page are welcome — that's what a methodology page is for.

Build on a platform that shows its work

Clean links, an honest portfolio, and analytics that say what they measure.

Get started free