- Client
- ZOOP
- Industry
- Creator network
- Services
- Recommendations, ML, AWS
monthly active users get a personal feed
recommendation system, designed and built from scratch
platforms on one feed: iOS, Android and web
data pipeline, models and infrastructure, end to end
The challenge
ZOOP promises creators a community-first algorithm, not For You page chaos. That promise lives or dies in the feed. There was no recommendation system to build on, and the feed had to feel personal from a fan's first session while giving creators with small audiences a real chance to be seen.
Our approach
We treated the feed as a product, not a model. Every view, like, comment and share becomes a signal in a streaming pipeline. Retrieval narrows all posts to a shortlist per person, a ranker orders it, and cold-start rules give new users and new creators a fair first shot. One senior team owns it all on AWS.
On a creator-first app, the feed is the promise. It has to be fair to the fan and to the creator.
What we did
01
Signal pipeline
Events from iOS, Android and the web stream through Kinesis, get checked by Lambda and land in two places: a DynamoDB feature store for live ranking and an S3 lake for retraining.
- Event stream from iOS, Android and web
- Validation and deduplication
- User and post feature store
- Raw event lake for retraining

02
Retrieval and ranking
A two-tower model and ANN search pull candidates from followed creators, channels, similar users and trends. A ranker scores them on engagement, then rules keep the feed varied and fair.
- Two-tower candidate retrieval
- ANN search over post embeddings
- Ranking on watch time and engagement
- Cold-start slots for new creators

03
AWS infrastructure
The feed service keeps warm feeds in ElastiCache, reads features from DynamoDB and scores on a SageMaker endpoint. Models retrain on a schedule, pass offline evaluation and ship through a registry.
- Feed service with a cache layer
- SageMaker training and serving
- Model versions with offline evaluation
- Monitoring for latency and errors

How it works
- 1
App events
Views, watch time, likes, comments and shares
- 2
Event stream
Kinesis carries events, Lambda checks and dedupes them
- 3
Feature store
DynamoDB keeps fresh user and post features
- 4
Retrieval
Two-tower model and ANN search pick candidates
- 5
Ranking
A ranker orders them, rules keep the feed fair
- 6
Feed API
FastAPI serves the feed, ElastiCache keeps it warm
- 7
Retraining
SageMaker retrains the models on the S3 event lake
The live product
zoop.com




Results
- 0110,000+ monthly active users open a feed ranked for them alone
- 02ZOOP owns its algorithm: built from scratch, not rented from a third-party feed API
- 03Cold-start rules give new users a relevant feed and new creators a first audience
- 04One pipeline on AWS, from app event to ranked feed, run by one senior team
Built with
- Models
- Python · PyTorch · scikit-learn · XGBoost
- Retrieval
- Two-tower model · ANN (HNSW) · FAISS · OpenSearch
- Data pipeline
- Kinesis · Lambda · DynamoDB · S3
- Serving
- SageMaker · ElastiCache · FastAPI · Docker
Services in this case
Next case · NVP
Payouts and paperwork for companies hiring freelancers
Let's talk
Got a project? Let’s scope it in 30 minutes.
Tell us what you're building. You'll get a straight answer on timeline, team and approach on the first call.

