Nik Liolios

Nik Liolios

I build personalization and recommendation systems. Currently a product manager on AI Mode at Google, working on personalized Search. Before that, ranking and recommendations for large-scale feeds.

AI Mode personalization

Google

Personalization for AI Mode — Google's generative search experience. The systems that tailor AI-generated answers to a user's context, history, and intent.

AI Mode personalized entry screen — 'Hi Lukas, what's on your mind?'
AI Mode with Personal Intelligence. Image: Google

Personal Intelligence in AI Mode ↗

Google Images feed

Google

Led the launch of the Images feed — the ranked, browsable feed surface in Google Images. Ranking model through to the production surface.

Google Images browsable feed across three phones — feed, save to collection, and 'More ideas'
The Google Images feed. Image: Google

A new way to explore and organize images ↗

Google Discover feed

Google

Retrieval and ranking for Google Discover — the recommendation feed in the Google app and on Android. The models behind what gets surfaced, and the infrastructure to serve them.

Instagram feed

Instagram

Before Google — recommendation and ranking for the Instagram feed. Retrieval and ranking models for the main feed.

FitnessBench

Leaderboard ↗

A code-verified benchmark for which LLM makes the best endurance coach. Questions are procedurally generated and graded against exercise-science ground truth — Daniels VDOT, Coggan FTP zones, acute:chronic workload — so there's no LLM judge to game and contamination doesn't help. Cost is a first-class axis: a model's value is its accuracy regressed on real dollars per 1k questions.

  • 6 disciplines, 23 task types — running, cycling, swimming, strength, physiology, injury
  • Finding — "a calculator, not a coach": models ace single-formula tasks, but none clears ~60% on multi-step pace/VDOT prescription
  • Provider-agnostic harness via OpenRouter; dynamic leaderboard + transcript viewer

nlearn

GitHub ↗

A from-scratch JAX transformer, plus the device driver to train it on Apple Silicon. Apple abandoned jax-metal, so I wrote an IREE PJRT Metal backend (a JAX device driver) and a native Metal FlashAttention kernel — forward and backward, O(seq) memory — to run a custom fused kernel on the M3 GPU. Includes the compiler patches to make it legalize (e.g. a vector.step SPIR-V lowering pass that wasn't registered for Metal).

  • Full model trains on the M3 GPU, ~0.35s/step
  • Kernel parity vs NumPy: 2.4e-7 fwd, 3.6e-7 bwd dQ
  • C++ PJRT backend, MSL kernels, MLIR, custom_vjp binding

Former founder — built Tetra (YC W17; AI phone-call transcription, acquired in 2018). Based in NYC. Outside work I race triathlon — most recently IRONMAN 70.3 New York.