CloudSnap
→ Fully serverless — 0 servers to manage
A fully serverless image storage platform on AWS with real-time object detection and auto-tagging via YOLO.
Stack
Problem
The brief was simple: build an image storage platform that scales without managing servers. The stretch goal I added — auto-tagging images based on what's actually in them — turned out to be the most interesting engineering problem on the project.
My Contribution
Designed and built the full AWS architecture as part of an Agile university team. My ownership covered:
- The API Gateway → Lambda ingestion pipeline (upload, validate, trigger processing)
- The YOLO integration inside Lambda for object detection on every upload
- DynamoDB schema for storing image metadata and detected tags for filtered retrieval
- Cognito-based auth to isolate each user's images so there's no cross-account data leakage
Architecture
Images arrive through API Gateway, trigger an AWS Lambda function that runs YOLO inference, and land in S3. Detected objects become tags stored in DynamoDB alongside metadata — so you can retrieve images by what's in them, not just by name.
Authentication runs through AWS Cognito. Each user's images are scoped to their account, which meant thinking carefully about S3 bucket policies and DynamoDB access patterns from the start rather than bolting auth on at the end.
The YOLO integration inside Lambda was a packaging challenge. Lambda has strict size limits and cold starts matter. The solution was Lambda Layers — packaging the YOLO model and weights separately so the function itself stays lean.
Outcomes
A working serverless platform where images are auto-tagged on upload and retrievable by object category. Zero servers to manage. The Lambda cold start on the YOLO function stays under 3 seconds — acceptable for a batch processing flow, though I'd explore async queuing (SQS) in a production version.
Learnings
Running ML inference inside a serverless function taught me more about Lambda internals than any tutorial. Package size, cold starts, and layer management all became real constraints rather than theoretical concepts. It's the kind of thing that only clicks when something breaks a deployment.