Projects

Speech Emotion Recognition Model

in progress


This project developed a machine learning system for speech emotion recognition (SER). SER is challenging due to the subjective nature of emotions, speaker variability, and real-world noise. The project aimed to design and implement a deep learning pipeline to process speech and predict emotional categories, enhancing audio-based machine learning. A core challenge is interpreting emotions from speech, a continuous signal with variable length, pitch, and style. Overlapping emotional expressions further complicate classification. This project explores deep learning models for extracting meaningful representations for emotion classification. The objective was to build a supervised learning model that takes audio files as input and predicts emotion labels, focusing on model development, training, and evaluation. The dataset comprised labeled speech audio files in a structured format, with folders for each emotion class. Key challenges included audio duration differences, noise, speaker variability, and class imbalance. The project was implemented in Python using PyTorch, Librosa for audio processing, NumPy for numerical operations, and Torchvision for leveraging pretrained CNNs. Scikit-learn was used for dataset splitting and evaluation. The system follows a pipeline: audio files are preprocessed, converted into tensors, passed through a neural network, and mapped to emotion predictions. Preprocessing involved normalizing the signal and padding/truncating to ensure consistent input length. A CNN based on a pretrained VGG16 model was used, leveraging transfer learning. The model was trained using cross-entropy loss and gradient-based optimization. Design decisions involved trade-offs between CNNs for feature extraction versus modeling temporal dependencies, fixed audio length for training feasibility versus potential information loss, and pretrained VGG for improved learning versus increased cost. Model performance was evaluated on a test set using accuracy and error analysis, revealing confusion between similar emotions. Challenges included handling noisy data, tuning parameters, and managing overfitting. The project demonstrated the subjective nature of emotion recognition. The codebase was modular, separating data handling, model definition, and training logic. A custom dataset class was implemented, and the training pipeline was designed to be extensible. Ethical considerations were addressed, acknowledging privacy risks and treating the model as a research exercise. Key learnings included understanding audio preprocessing, the advantages of transfer learning, and the limitations of CNNs for sequential data. Future improvements include transformer-based models, spectrogram representations, data augmentation, cross-dataset generalization, and continuous emotion dimensions, as well as multimodal emotion recognition. Overall, this project demonstrates skills in machine learning, deep learning, audio processing, and software engineering, showcasing the ability to work with complex data, reason about trade-offs, and evaluate model performance. The techniques are relevant to roles in AI, data science, machine learning engineering, and research.

sl

LLM Based Search Engine

in progress


This project delivers relevant current affairs and auto-generated quizzes using large language models (LLMs), semantic embeddings, and news data. It retrieves, filters, and ranks news articles based on a user's topic, recommends related content, and generates factual quiz questions to enhance understanding.

Addressing the challenge of navigating vast real-time news, this project combines information retrieval with semantic filtering and LLM-based content generation to ensure relevance, coherence, and engagement. It aims to retrieve relevant articles, reduce noise, surface diverse perspectives, and transform passive reading into active learning.

The primary objective was to design a modular pipeline demonstrating skills in NLP, semantic similarity, system design, and LLM integration. This functional prototype emphasizes data flow, transparency, and extensibility.

The application captures user queries via CLI, web form, or API, applying input validation for robustness. It collects data using news APIs or RSS feeds, storing articles with metadata.

The filtering and ranking module uses semantic embeddings to rank articles by relevance, retaining only the top-N articles. A recommendation engine then suggests related content, promoting broader understanding.

The quiz generation module summarizes content and uses an LLM to generate multiple-choice, true/false, or short-answer questions, structured in JSON to test factual understanding.

The system follows a linear pipeline: query ingestion, data collection, semantic filtering, recommendation, and content generation. Modules are decoupled for independent testing and enhancement.

Technical trade-offs include balancing relevance with computational cost, limiting results to improve quality, and validating LLM-generated quizzes. These reflect real-world engineering considerations.

Challenges included handling varied article structures and ensuring semantic similarity aligns with user intent. Ensuring factual correctness in LLM-generated questions also proved difficult.

Key learnings include practical experience with semantic search, LLM integration, and modular system design. The project reinforces the distinction between information retrieval and understanding.

Future improvements include adding source diversity constraints, implementing confidence scoring for quizzes, supporting multilingual content, caching embeddings, and deploying the system as a web application. Additional extensions could involve difficulty-adjusted quizzes and longitudinal knowledge tracking.

Overall, this project demonstrates competence in NLP, semantic similarity, LLM integration, and system design. It showcases the ability to manage trade-offs and build learning-oriented applications using modern AI techniques, relevant to roles in data science, applied AI, machine learning engineering, and software engineering.

sl

London Air Quality Tracker

This project developed an interactive London Air Quality Tracker for exploring historical (2018-2023) and real-time air pollution levels. Visualizing official DEFRA datasets and integrating live data, the application allows users to examine pollution at specific locations, compare trends, and extract statistics via a map-based interface. Addressing the difficulty non-experts face in contextualizing raw pollution data, this tool transforms complex datasets into an accessible visual analytics platform for exploration and informed decision-making. The core challenge was effectively presenting large-scale, time-dependent environmental data accurately, responsively, and user-friendly. The project objective was a modular, interactive JavaFX desktop application enabling users to explore pollution data by location, pollutant, and time. The focus was on usability, performance, and maintainable software architecture. The application utilizes real-world DEFRA pollution data (Nitrogen Dioxide (NO₂), Particulate Matter PM₁₀, and PM₂.₅) across London monitoring sites. Data points include grid identifiers, coordinates, and pollutant measurements. Real-time data from the OpenWeather API allows comparison of historical trends with current conditions. Data handling required careful consideration of spatial resolution, temporal aggregation, and live data latency. Implemented in Java with a JavaFX GUI, the application uses panels, toolbars, scroll panes, and charts for an interactive experience. It follows an object-oriented design emphasizing modularity, cohesion, and separation of concerns. The system is structured around specialized panels inheriting from a shared Panel superclass for consistency. The application launches with a Welcome Panel, routing users to the Data Visualisation Panel. This central hub combines a toolbar, sidebar, and scalable map-based visualization. Pollution data is rendered on the map using color-coded markers (green, yellow, orange, red) representing increasing pollution levels. Hover interactions display detailed metrics, while click events open a Pollution Statistics Panel for in-depth analysis. This panel provides average pollution levels, highest levels within a radius, and trend analysis (line graphs) based on user-selected parameters. Numerical outputs are consistently rounded for clarity. Advanced interaction features include map scaling (zoom in/out/reset), a scroll pane for navigation, and a search bar for location queries. Filtering isolates severe pollution areas. Data export via a “Save as CSV” feature enables offline analysis using Java’s file handling utilities. A built-in help page provides usage guidance. From an engineering perspective, code quality and maintainability were prioritized. Panels and components were encapsulated in classes, promoting cohesion and loose coupling. Monolithic classes were refactored into smaller components for improved readability, testability, and extensibility. JUnit was used for unit testing, with test suites for pollution statistics calculations and panel logic. The project faced technical challenges, including scroll pane behavior during map scaling and real-time data integration latency. These issues were documented and addressed with asynchronous updates and placeholder states. Key learnings included building interactive data visualization systems, managing spatial/temporal datasets, and designing user-friendly interfaces. The project reinforced the importance of modular architecture, iterative refactoring, and robust testing. Future improvements include enhanced zoom behavior, extended real-time data integration, expanded geographic coverage, and automatic zooming for search results. The system could be extended into a web-based platform or integrated with predictive pollution modeling. Overall, this project demonstrates strong competencies in software engineering, object-oriented design, data visualization, and real-world data handling. It showcases the ability to translate complex datasets into intuitive analytical tools and reflects skills applicable to software engineering, data science, and applied computing roles.
sl

Wild Web - Predator and Prey Simulation

Wild Web is an object-oriented simulation of a predator-prey ecosystem, developed in Java using BlueJ. It models a dynamic environment with interacting species (predators, prey, and plant life), governed by biological rules, including breeding, feeding, competition, disease, weather, and day/night cycles. The simulation emphasizes scalability, extensibility, and object-oriented design. This project explores modeling complex ecological systems through software, leveraging inheritance, abstraction, polymorphism, and dynamic dispatch. Natural ecosystems provide an ideal testbed for object-oriented system design due to their interacting agents and dynamic behaviors. A core design challenge was creating a flexible architecture allowing diverse species to coexist, interact, and evolve without tight coupling or code duplication. The system supports adding new organisms, behaviors, and environmental conditions without major structural changes. The simulation features a 2D field populated by foxes, eagles, rabbits, pigeons, mice, and trees. Predators hunt prey; prey reproduce or are consumed; rabbits consume plants; and plants grow, spread, and die. Organisms age, reproduce under specific conditions, and may die from age, starvation, disease, or environmental factors. Implemented in Java and BlueJ, the system comprises eighteen interrelated classes. The architecture centers on an abstract Organism superclass, encapsulating shared properties like age, location, life state, and reproduction. Animal and Tree inherit from Organism, sharing lifecycle behavior while diverging in movement and interaction. The Animal class extends Organism, introducing gender, breeding, hunger, and movement. Predator and Prey subclasses enhance extensibility and reduce duplication. Predators inherit hunting behavior, while prey inherit food value and vulnerability. Concrete species classes (Fox, Eagle, Rabbit, Mouse, Pigeon) override behavior for species-specific rules. Hunting is managed by a dedicated Hunting class, which resolves predator competition for prey using probability maps to determine success, allowing species dominance tuning without hard-coding. This improves cohesion and balance. Environmental dynamics are central. Time is modeled explicitly with day/night cycles. Weather conditions (normal, rain, storm, flood) are determined probabilistically and influence behavior. Organisms define actions under different conditions via overridden methods (dayAct, nightAct, weather-specific behaviors), using dynamic method dispatch. Trees, modeled as stationary organisms, grow, reproduce by spreading, and serve as food for rabbits. They respond to weather but do not move. Introducing plants required refactoring core classes (Simulator, Field, SimulatorView) to operate on generic Organism instances, improving generality. Disease dynamics enhance realism. Animals may become diseased randomly or through proximity to infected animals, with transmission via consumption. Diseased animals may recover, remain infected, or die based on probabilities. This adds state management and interaction while preserving modularity. The Simulator class controls the simulation, initializing the field, populating organisms, managing time and weather, and advancing the simulation step-by-step. The SimulatorView class visualizes the field and organism distribution. Supporting classes (Field, Location, FieldStats, Randomizer) manage spatial representation, statistics, and randomness. The project emphasizes object-oriented principles. Inheritance reduces code duplication, abstraction simplifies interactions, and polymorphism allows flexible behavior extension. Method overriding and dynamic dispatch enable species-specific behavior without complicating the core loop. The design allows adding new species or rules with minimal changes. Challenges included balancing population dynamics. Multiple species and environmental effects made preventing collapse or runaway growth difficult. Static species attributes complicated fine-tuning. Improvements include reducing reliance on static attributes and refining the inheritance hierarchy. Key learnings include understanding object-oriented design, the benefits of abstraction and intermediate inheritance, and the complexity of modeling interacting agents. The project reinforced designing for extensibility and anticipating future requirements. Future improvements include refining the inheritance tree, improving population stability through adaptive parameters, expanding biodiversity, and introducing additional environmental constraints. The simulation could be extended with data collection, visualization of population trends, or real-time parameter tuning. Overall, Wild Web demonstrates competence in software engineering, object-oriented system design, and simulation modeling. It showcases the ability to design scalable architectures, manage complex interactions, and reason about system behavior.
sl

Sunblock Saga

Sunblock Saga is a Java text adventure where players strategically navigate an indoor environment to reach a terrace garden for reading, avoiding sun exposure by acquiring sunscreen. Success depends on exploration, resource management, and careful decision-making within a house of interconnected rooms, characters, and items. The project's objective was to create an engaging interactive experience that rewards strategic thinking, moving beyond simple linear gameplay. Constraints such as limited inventory and irreversible decisions compel players to make strategic trade-offs. The project models an interactive game world using object-oriented principles, emphasizing a clean and extensible design. The system supports multiple rooms, items with properties, mobile characters, and flexible user commands while maintaining loose coupling and a clear separation of concerns. Implemented in Java, the architecture centers on a Game class that orchestrates gameplay, delegating tasks to classes such as Room, Item, Character, Parser, Command, and CommandWords. Objects are instantiated at startup to maintain a consistent game state. Rooms form the foundation, each with a description, exits, and items. Created and connected during initialization, they enable generic and extensible navigation logic. Items possess properties like name, weight, and pick-up status. The player's inventory, managed with a weight limit, introduces resource management challenges. Characters move autonomously between rooms, adding dynamism and interacting with the player through hints. User interaction is managed via a command-processing system (Parser, Command, CommandWords). The parser tokenizes and validates user input, supporting single and multi-word commands (e.g., a three-word "ask" command for information). Gameplay mechanics include a command history ("back" command), hints ("clue" command), and item inspection ("examine" command). The win condition—reaching the terrace garden with sunscreen—is continuously checked, providing a clear objective. Key features include a magic transporter room and autonomous character movement. The parser's support for three-word commands demonstrates extensibility. From a software engineering perspective, the project emphasizes code quality. Loose coupling is achieved through restricted access to class internals. Encapsulation is consistently applied. While individual methods are cohesive, the Game class's broad responsibilities suggest refactoring opportunities, such as introducing manager classes. The project demonstrates responsibility-driven design. Each class has a defined role: Game manages flow, Parser interprets input, Rooms manage navigation, Items represent resources, and Characters handle movement. The play and processCommand methods orchestrate execution. Maintainability is a key consideration. Modular design, encapsulation, and standard data structures facilitate extending the game. Debugging is simplified by clear class boundaries. Key learnings include object-oriented design, command-driven systems, state management, and balancing flexibility with structure. The project reinforces the importance of refactoring and designing for extensibility. Future improvements could include further decomposition of the Game class, richer character dialogue, branching storylines, and advanced state tracking. The architecture supports these enhancements. Overall, Sunblock Saga demonstrates strong software engineering skills, particularly in object-oriented design, system modularity, and interactive application development. It showcases the ability to design structured yet flexible systems and build engaging user-driven applications.
sl

The Orchid Project

The Orchid Project is a full-stack web application designed to bolster student mental well-being by integrating music-based coping mechanisms, reflective journaling, and self-assessment tools into an accessible platform. Built with Python, Flask, SQL, HTML, CSS, Bootstrap, and JavaScript, this project transforms a student-led mental health initiative into a scalable digital resource with tangible impact. The project stems from personal experience. As a student familiar with anxiety and academic pressures, I created this platform to help others understand and utilize the connection between music, mental health, and cognitive function. While many students intuitively use music, few understand how specific auditory patterns can enhance focus, regulate emotions, and manage stress. This platform aims to bridge this gap with structured, research-backed tools. The core problem addressed is the scarcity of student-focused, non-clinical mental health resources readily accessible for daily use. Existing solutions are often overly clinical, inaccessible, or disconnected from student routines. The Orchid Project integrates mental well-being into familiar activities like listening to music, planning the day, and reflecting on emotions. The application is a Flask-based web platform featuring user authentication, persistent data storage, and a modular front-end. Users first encounter a login page, requiring registration for access. Post-authentication, users are directed to the homepage, the central navigation point. Session management ensures that core functionality is exclusive to logged-in users, reinforcing data privacy and personalized experiences. The homepage introduces the project's purpose, highlighting how music and structured reflection can support academic and emotional well-being. It provides a concise overview of the platform’s goals and encourages feature exploration. The "About Us" section details the project's scientific and conceptual underpinnings, discussing music's neurological impact, the link between mental health and academic performance, and the initiative's long-term vision. This positions the platform as a research-driven project rooted in student experience, not just a tool. A key feature is the "Find a Playlist" functionality. Based on research into listening habits and emotional states, the system presents a structured form with eight questions. These questions gather information about the user’s mood, study habits, stress levels, and preferences. Based on these responses, the application recommends curated playlists designed to support focus, calmness, or emotional regulation. This feature showcases applied logic, conditional reasoning, and user-centered design. The journaling feature provides a dedicated space for daily reflections, particularly encouraged in the morning to structure the day. Entries are persistently stored, fostering a consistent habit of self-reflection. Upon submission, users receive a motivational prompt, reinforcing journaling as a routine. This emphasizes behavioral reinforcement and user engagement. The "Self Check-In" section offers a safe, non-diagnostic space for users to reflect on symptoms related to common student challenges: anxiety, eating disorders, substance abuse, PTSD, and burnout. Rather than clinical diagnosis, this feature focuses on awareness, self-reflection, and early recognition, upholding ethical boundaries in mental health technology. Technically, the project maintains a clear separation between front-end and back-end responsibilities. Flask routes manage authentication, form processing, and data persistence, while HTML templates and Bootstrap ensure a consistent, responsive user interface. JavaScript enhances interactivity and user feedback. Static assets visually represent mental health themes, creating an empathetic, supportive aesthetic. The project prioritizes scalability and maintainability. Templating prevents duplication, authentication logic is centralized, and the modular structure allows for new features—like additional self-check tools or personalized analytics—without restructuring the application. User data is securely stored using SQL-backed persistence, enabling personalized experiences across sessions. Ethical considerations were paramount. The platform avoids clinical claims, emphasizes user consent, and frames all tools as supportive, not diagnostic. This ensures responsible technology use in a sensitive domain while providing meaningful value. Key learnings from The Orchid Project include full-stack web development, user authentication and session handling, form-based data collection, and translating a social initiative into a functional digital product. The project also strengthened skills in user-centered design, ethical reasoning, and building applications around real human needs. Future improvements include enhanced playlist personalization, journaling pattern analytics, optional reminders, and expanded coping strategy support. The project could also evolve into a larger community platform or integrate with external music services. Overall, The Orchid Project demonstrates the ability to design and build a full-stack application with real-world relevance, combining technical execution with empathy, ethical awareness, and product vision. It showcases skills applicable to software engineering, product-oriented development, and human-centered technology roles, reflecting initiative and purpose.
sl

Production Management System

for Vinod Rice Mill Pvt Ltd

This project involved developing a full-stack, role-based web application to optimize order processing, internal coordination, and client communication for Vinod Rice Mill Pvt Ltd, a manufacturing business. The system replaced a fragmented manual workflow that relied on multiple applications and direct communication for tracking production, quality control, and shipment status. The project was driven by direct client engagement and a needs analysis that revealed operational inefficiencies stemming from scattered information, delayed updates, and potential for human error. The primary objective was to create a centralized software solution that enhances visibility, accountability, and data consistency, while ensuring ease of adoption within the existing business environment. The core problem addressed was the absence of a unified system for managing order lifecycles across departments with varying responsibilities and access privileges. The system needed to provide role-specific data views while maintaining security, real-time updates, and traceability. The application was built as a role-based web platform using Python, Flask, SQL, HTML, and CSS. Users are authenticated and authorized upon login, then directed to role-specific dashboards displaying relevant functionalities. This access control model ensures data privacy and operational clarity. Administrators possess full system control, including employee management, order oversight, and system configuration. The administrator dashboard facilitates employee account management, detail viewing, employee removal, and order progress monitoring, supporting quality assurance and accountability. Employees are assigned functional roles (e.g., production, finance, shipment), each with a dedicated interface for updating order status within their department. This modular design minimizes cognitive load and prevents unauthorized data modification. Customers interact through a dedicated interface to place orders, view details, track history, and receive real-time updates. This structured communication enhances transparency and customer trust. Orders follow a defined lifecycle, with each update persistently recorded for auditability and analysis. This structured record-keeping enables bottleneck identification, error reduction, and performance evaluation. The system supports order completion, payment tracking, and historical reporting. Technically, the application uses Flask routes for authentication, authorization, and business logic. SQL ensures persistent data storage and consistency. HTML templates and CSS create a clean, role-appropriate interface with shared layout components for maintainability. A key design consideration was phased deployment feasibility, allowing the client to pilot the software, evaluate its effectiveness, and transition gradually, minimizing operational risk and maximizing user acceptance. This approach reflects realistic change-management constraints in small and medium enterprises. The project emphasizes separation of concerns, with clear divisions between authentication, role validation, order management, and UI rendering. Templates are designed for specific user journeys, enhancing clarity and reducing coupling. Development challenges included designing intuitive role-based navigation, preventing unauthorized data access, and ensuring synchronized updates across user views, requiring careful session management, access controls, and database consistency. Key learnings included translating business requirements into software architecture, implementing role-based access control, designing multi-user workflows, and building systems that support real operational processes. The project also enhanced skills in client communication, iterative design, and balancing technical solutions with organizational realities. Future improvements include adding analytics dashboards, automated notifications, finer-grained permissions, and scalability for additional product lines or facilities, potentially extending the system with mobile interfaces or API integrations. Overall, this project demonstrates applied software engineering skills in building secure, role-based, data-driven web applications with real business impact, showcasing the ability to analyze real-world problems, design structured solutions, and implement systems that improve efficiency, accountability, and customer experience.

sl

SG

samairagheek@gmail.com

samaira.gheek@kcl.ac.uk



30, Floral Street, WC2E 9DP

Home

Projects

Experience

Contact