Personalized themoment they search.
RoleTensor re-ranks results from in-session behavior — clicks, dwell, skips — with two-tower retrieval and a session reranker. No login. No history. Sub-200ms.
one API call · <200ms p95 · works on anonymous traffic
- 1FSenior Product DesignerFigma · Remote71
- 2LProduct DesignerLinear · Hybrid66
- 3VDesign LeadVercel · Remote62
- 4SFrontend EngineerStripe · Hybrid60
- 5NUX ResearcherNotion · Remote58
- 6RData ScientistRamp · Remote57
- 7HSales ManagerHubSpot · Onsite55
- 8WMarketing LeadWebflow · Hybrid53
Personalization that doesn't need a profile.
Collaborative filtering needs history you don't have on a first-time visitor. Batch models can't react inside the session. Static relevance ignores what the user tells you with every click. RoleTensor learns from the session that's happening right now.
No profile
Works on anonymous, logged-out traffic.
In-session
Reacts within the same visit — not tomorrow's batch.
Signal > metadata
Behavior outranks keywords and filters.
Three steps, every search
Retrieve
Multi-intent two-tower search pulls thousands of candidate jobs via ANN in milliseconds.
Read the signals
Clicks, dwell, and skips from the current session — no profile, no cold start.
Re-rank live
The session reranker rescores candidates instantly, adapting as intent shifts.
Two towers, one session-aware reranker.
A fast retrieval stage proposes; a precise, session-aware stage decides — so every result reflects what this visitor is doing right now.
Multi-intent retrieval
One search → several intent vectors, merged with RRF.
Distance-aware
Geo distance is a first-class ranking feature.
Dual-memory
Learns from clicks and skips, separately.
Cold-start ready
Query-clustering teacher covers thin history.
Every job, one vector space.
RoleTensor embeds every job and every search into one shared vector space — so matching is driven by meaning, not words. No translation, no per-language models, no keyword dictionaries.
Any language in, any language out
A query in one language finds the right jobs written in another.
No translation layer
No machine translation and no per-language models to maintain.
One model, every market
Launch a new country with zero retraining or keyword upkeep.
Built to personalize the un-personalizable
Real-time, in-session
Personalized from the very first search.
No login required
Runs on anonymous traffic — your majority.
Learns from skips
Negative signal shapes ranking, not just clicks.
Geo-aware
Distance is a first-class ranking feature.
Understands nuance
Salary, seniority, benefits live in the embeddings.
Adapts to intent shifts
A second search re-reads what they want.
Language-agnostic
Meaning over words — works across any language, no translation.
More clicks per user. More ROI. Same traffic.
Relevance gains compound where it matters — and every lift is measurable.
One API call. Under 200ms.
Send a query, the user's location, and the session's events; get back a re-ranked list of jobs — each with a tracking link. Two-tower retrieval and the session reranker run behind one endpoint, so you drop it into your existing search.
POST /api/job-rec/search { "uid": "u_8f3c1a", "q": "driver", "geo": "us", "lat": 40.7128, "long": -74.006, "session_events": [ { "referencenumber": "abc123", "label": 1, "timestamp": 1770000000000 }, { "referencenumber": "def456", "label": 0, "timestamp": 1770000005000 } ] } → { "jobs": [ … ], "search_request_id": "…", "AB": { … } }
See it live on your traffic.
A short demo on a slice of your real search logs — see the lift before you commit.
No login · No history · Sub-200ms