w user data—including user profiles, interaction logs, and product impressions—into designated S3 buckets.</li>
<li><strong>Layer 1</strong>: Embedding Generation: On the Data Science side, Spark jobs pulled data from multiple S3 sources, cleaned and preprocessed it, and applied matrix factorization to generate user and item embeddings. The processed data and embeddings were then stored back in S3 in a structured format.</li>
<li><strong>Layer 2</strong>: Candidate Generation (CG): In this stage, Spark 