Skip to content
TrackJet

7-day Pro trial included with every new account — no card, no charge.

Start free with 500 saved shipments. Every new account also gets a 7-day Pro trial — no card required.

Start 7-day Pro trial

Delivery forecast & transit stats

How TrackJet estimates a delivery window from its own anonymous observations — mature routes only, and silent when the data is thin.

What it estimates

For a route TrackJet has seen enough of, it can answer "when is this likely to arrive?" — not as a single confident date, but as a window built from its own anonymous delivery observations. You get a typical (p50) and a slow-case (p90) figure, so you can plan against the spread instead of a number that pretends to be exact.

Where the numbers come from

Only TrackJet's own observed transits feed the estimate — origin/destination country, vertical, and the real elapsed times we have recorded. No third-party ETA feed, no vendor model.

A route becomes eligible only once it is mature: at least a handful of real observations (the threshold is published in the live capabilities snapshot, ten today). Below that, the engine returns nothing — the timeline simply omits the forecast rather than show a guess.

On the timeline

When a route qualifies, the timeline shows forecast "ghosts" — dashed, clearly-provisional p50/p90 markers ahead of the last real event. They are visibly different from recorded events on purpose: a forecast is never dressed up as a fact.

Programmatic access

Two MCP tools and the REST API expose the same numbers the site uses:

  • get_transit_stats — p50/p90 and the observation count for a route;
  • forecast_delivery — the projected window for a specific shipment.

Both answer only for mature routes and return an explicit "insufficient data" otherwise. A get_transit_stats call for a route TrackJet hasn't seen enough of returns no numbers at all:

``bash curl -s https://trackjet.world/mcp -H 'Content-Type: application/json' -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "get_transit_stats", "arguments": { "vertical": "parcel", "origin_country": "DE", "destination_country": "US" } } }' ``

``json { "matured": false, "route": "parcel DE->US", "note": "Fewer than 10 own observations for this route — no statistics are published. Do not fabricate a transit time from this answer." } ``

Once a route crosses the maturity threshold the same call returns matured: true with p50_days, p90_days, the observation count n, and a source line — the exact window the timeline draws. Numbers appear only when they are earned, never as a placeholder.

What it does not do

It is not a promise and not a carrier SLA. It does not know about a specific truck breaking down or a customs hold today — for the latter see [customs friction warnings](/docs/customs-friction) and [the anomaly engine](/docs/anomaly-engine). And a brand-new or rare route will honestly say it cannot estimate yet. Calibrating expectations beats inventing a date.