HomeProjectsGo Links

Short Links for Every Job

Published Oct 26, 2026
⋅
Updated Nov 9, 2026
⋅
2 minutes read
Every job the bots post, and every job in the listings READMEs, links through go.vansh.nyc so clicks can be counted.

Every job gets a short link like go.vansh.nyc/BX. Clicking it lands on the real application page a few milliseconds later, and the click is counted on the way through. These are the counts, live:

Fast

A go link sends you on to the job in about 27 milliseconds, or about 40 for a job nobody near you has opened lately. The job site then takes about 430 ms just to start answering, so the link is under a tenth of the wait. Counting the click adds nothing: it’s saved after you’re already on your way.

27 msa link opened before
40 msa different job each time
0 msadded by counting it
19 msstats page, first byte
Until the job page starts loading457 ms
0 ms250 ms500 ms
go.vansh.nycThe job site
Median wait until the job page starts loading
StepMedian90th percentile
go.vansh.nyc27 ms44 ms
The job site430 ms628 ms
Measured from New York on Oct 26: 1791 requests per case, 2 seconds apart, and the 25 job pages those links led to. Medians; 9 in 10 go links answered within 44 ms.

Every time

That’s not one lucky request. Here’s a pair of requests every 2 seconds for an hour: a link opened before, and a different job each time.

Redirect time, a pair of requests every 2 seconds
LinkMedian9 in 10 withinSlowest
Opened before27 ms44 ms210 ms
A different job each time40 ms62 ms2016 ms
3,582 requests from New York on Oct 26, timed from sending to the first byte back. 3,518 answered within 100 ms; the slowest took 2,016 ms. Left out: 7 picks of jobs that no longer exist, and 2 requests that got no answer.

3,518 of 3,582 answered within 100 ms. Minute by minute, the median never passed 33 ms for a link opened before, or 48 for a different job. One took 2 seconds; every other request was faster than a typical job site starts answering.

A link for every job

New roles come from a sync job that runs every hour and commits them to the listings repos. The repos only ever hold go links. The real URLs live with the link service.

So the run starts by swapping every key for its real URL and ends by swapping them back, giving each new job a key on the way out. Everything in between (finding jobs, checking them, dropping duplicates, closing dead ones) works on real URLs, just as it did before go links existed.

listings.json
GitHub
↓
sync run
hourly
↓
link service
keys ↔ URLs
Docusigngo.vansh.nyc/BU
Affirmgo.vansh.nyc/BX
Every url in the repo is a go link.
Everything between the two swaps works on real URLs, exactly as it did before go links existed.

If the link service doesn’t answer, the run commits nothing. A commit without the second swap would put real URLs back in the repo, so it waits for the next run instead.

Two characters

The first version gave every link 20 random characters. Now a key is the job’s row number, written with digits, then lowercase, then uppercase. The 2,353rd job is BX. Every job so far fits in two characters, and 238,327 would fit in three.

Job #2,353go.vansh.nyc/BX
First version/to/008b613c99eaf693b59d
Now/BX
161
23,843
3238,327
414.8M
5916.1M
656.8B
CharactersJobs that fit
The key is the job's row number, so it only grows a character when the jobs before it run out, and two jobs can never land on the same one.

Rows are never reused, so two jobs can’t share a key and the same job always keeps its own. Named links like go.vansh.nyc/internships are at least 7 characters, and keys stop at 6, so a name can never equal a key.

The click

The redirect runs in the data center nearest whoever clicked. It looks in that data center’s cache first, then the nearest copy of the links, then the main one.

Click
↓
Cache
↓
Nearby copy
skipped
↓
Main copy
skipped
↓
Job page
after you’re gone
Count the click
Sent on in about 27 ms.
The click is counted after the job page has its answer, so counting never adds to the wait.

Discord and Slack open every link to draw its preview. Those are redirected like any other but aren’t counted.

Always a 302

A 301 tells the browser a link moved for good, so it remembers the job and skips go.vansh.nyc next time. Faster by a few milliseconds, and every repeat click disappears.

0times opened
0clicks counted
Open the link a few times.
A 301 saves a few milliseconds on repeat clicks and hides every one of them. Every go link is a 302.

Counting

Every click is saved as its own record. The stats page could count them all each time it opens, but there are more every day, so every visit would be slower than the last.

Instead, each click adds one to a few tallies as it’s saved: its hour, its day, its job, and where the link was posted. The page reads the tallies, which stay the same size however many clicks pile up.

Read per stats page load, after 1 day
Count every click146,882
Read the talliesthe same every day
A day is 146,882 clicks, the real count for Oct 26. The tallies only cover what the page shows, so old clicks cost nothing to skip.

What a click keeps

The job, where the link was posted, when, and the kind of device. The IP address is scrambled before it’s saved, so the real one can’t be recovered. There’s no browser fingerprinting. Anything after the redirect, including whether someone applied, isn’t visible.