NyashaK commited on
Commit
23fb72b
·
1 Parent(s): d649c85

adding logging

Browse files
app.py CHANGED
@@ -18,8 +18,17 @@ async def set_starters():
18
  ),
19
 
20
  cl.Starter(
21
- label="Project highlights",
22
- message="List Ronald’s most impactful projects in bullet points. For each, include the project name, tools used, the problem it addressed, and the outcome. Use clear paragraphs or bullet points for readability.",
 
 
 
 
 
 
 
 
 
23
  icon="https://cdn-icons-png.flaticon.com/512/979/979585.png",
24
  ),
25
 
@@ -30,20 +39,29 @@ async def set_starters():
30
  ),
31
 
32
  cl.Starter(
33
- label="Experience with data engineering",
34
- message="Describe Ronald’s experience with data engineering. Include tools and platforms used, types of pipelines or systems built, and example projects. Use clear paragraphs or bullet points for readability.",
35
  icon="https://cdn-icons-png.flaticon.com/512/2674/2674696.png",
36
  ),
37
 
38
  cl.Starter(
39
  label="Explain a specific project",
40
- message="Describe one of the best projects Ronald has worked on. Include the objective, approach, tools used, and the results. Format the answer in readable paragraphs or bullet points.",
 
 
 
 
41
  icon="https://cdn-icons-png.flaticon.com/512/3756/3756550.png",
42
  ),
43
 
44
  cl.Starter(
45
  label="Certifications and education",
46
- message="List Ronald’s academic background and certifications. For education, include the degree, institution, and year. For certifications, include the name, issuing organization, and year. Format the answer using bullet points or markdown.",
 
 
 
 
 
47
  icon="https://cdn-icons-png.flaticon.com/512/2922/2922506.png",
48
  )
49
 
 
18
  ),
19
 
20
  cl.Starter(
21
+ label="Summarize Key Projects",
22
+ message=f"""
23
+ List Ronald's top 3 most impactful projects. For each project, use the following format:\n
24
+ **Project Name**: [Name of the project]\n
25
+ **Objective**: [What was the goal?]\n
26
+ **My Role & Achievements**: [What did Ronald do and what was the result?]\n
27
+ **Technologies Used**: [List of tools and technologies]\n
28
+ **Source URL**: [Source URL]\n
29
+ **Demo URL**: [Demo URL if its available if not skip]\n
30
+
31
+ """,
32
  icon="https://cdn-icons-png.flaticon.com/512/979/979585.png",
33
  ),
34
 
 
39
  ),
40
 
41
  cl.Starter(
42
+ label="Experience with AI and Data",
43
+ message="Describe Ronald’s experience with data and AI. Include tools and platforms used, types of pipelines or systems built, and example projects. Use clear paragraphs or bullet points for readability.",
44
  icon="https://cdn-icons-png.flaticon.com/512/2674/2674696.png",
45
  ),
46
 
47
  cl.Starter(
48
  label="Explain a specific project",
49
+ message=f"""Describe one of the best projects Ronald has worked on.Cover the following points in your answer:\n
50
+ - **Objective**: What was the main goal of the project?\n
51
+ - **Architecture**: How was the system designed? (e.g., Kafka, Spark, DynamoDB)\n
52
+ - **My Achievements**: What specific parts did Ronald build or accomplish?\n
53
+ - **Outcome**: What was the final result or impact?""",
54
  icon="https://cdn-icons-png.flaticon.com/512/3756/3756550.png",
55
  ),
56
 
57
  cl.Starter(
58
  label="Certifications and education",
59
+ message=f"""List Ronald’s academic background and professional certifications. Use the following format:\n\n
60
+ ### Education\n
61
+ - **[Degree]**, [Institution] - Graduated [Year]\n\n
62
+ ### Certifications\n
63
+ - [Certification Name]\n
64
+ - [Certification Name]""",
65
  icon="https://cdn-icons-png.flaticon.com/512/2922/2922506.png",
66
  )
67
 
data/README - Health.md DELETED
@@ -1,38 +0,0 @@
1
- # Health Trends in Southern Africa: A 2013-2020 Overview
2
-
3
- This project visualizes key health indicators in Southern Africa between 2013 and 2020, leveraging data from the World Bank. The primary focus is on life expectancy, infant mortality rates, maternal mortality ratios, and HIV prevalence across selected countries: Zimbabwe, Botswana, Mozambique, and South Africa.
4
-
5
- ## Data Source
6
- The dataset used in this analysis is obtained from the **World Bank API** (`API_Download_DS2_en_csv_v2_60220.csv`). For more details on the data, visit the [World Bank Data website](https://data.worldbank.org).
7
-
8
- ## Libraries Used
9
- The following R libraries were utilized for data manipulation and visualization:
10
- - `ggplot2`: For creating rich and customizable visualizations.
11
- - `tidyr` and `dplyr`: For data wrangling and transformations.
12
- - `gridExtra`: To arrange multiple plots on a grid.
13
- - `reshape2`: For reshaping data for the heatmap.
14
- - `viridis`: For consistent, perceptually uniform color schemes.
15
- - `patchwork`: For arranging multiple plots into a cohesive visualization.
16
- - `ggtext`: To customize plot annotations and text styles.
17
-
18
- ## Key Visualizations
19
- 1. **Life Expectancy Line Chart**
20
- - Plots the trend in life expectancy at birth for each country over the years 2013–2020.
21
-
22
- 2. **Infant Mortality Rate Bar Chart**
23
- - Displays the infant mortality rate (per 1,000 live births) for the selected countries.
24
-
25
- 3. **HIV Prevalence Box Plot**
26
- - Visualizes the distribution of HIV prevalence (% of the population aged 15-49) across the countries.
27
-
28
- 4. **Maternal Mortality Ratio Heatmap**
29
- - Shows the maternal mortality ratio (modeled estimate per 100,000 live births) for each country and year.
30
- ## Visualization
31
- ![Dashboard.png](Dashboard.png)
32
-
33
- ## Usage
34
- 1. **Install Required Libraries**
35
- Ensure all the libraries mentioned in the "Libraries Used" section are installed in your R environment.
36
- ```R
37
- install.packages(c("ggplot2", "tidyr", "dplyr", "gridExtra", "reshape2", "viridis", "patchwork", "ggtext"))
38
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/README - Pyomo.md DELETED
@@ -1,47 +0,0 @@
1
- # Portfolio Optimization with Streamlit and Pyomo
2
-
3
- This project optimizes stock portfolios by selecting up to 10 tickers and a custom date range. Using **Pyomo** for optimization, it minimizes risk while targeting a desired return. The app displays portfolio allocations, expected returns, risk ceilings, and stock correlation heatmaps, with data sourced from **yfinance**.
4
-
5
- ## Features
6
-
7
- - **Stock Ticker Selection**: Select up to 10 stock tickers.
8
- - **Date Range**: Choose a custom start and end date.
9
- - **Optimization**: Minimize portfolio risk while maintaining a desired return.
10
- - **Display**: View portfolio allocation, max return, risk ceiling, and a heatmap of stock correlations.
11
-
12
- ## Why Start and End Dates are Required
13
- - The start and end dates define the period for which stock data is fetched and analyzed. These dates allow the app to calculate historical returns and perform portfolio optimization based on the chosen timeframe. By selecting specific dates, users can analyze stocks under different market conditions and tailor the optimization to their desired time horizon.
14
-
15
- ## Setup Instructions
16
-
17
- ### 1. Create a Virtual Environment
18
-
19
- ```bash
20
- python -m venv venv
21
- ```
22
- Activate the virtual environment:
23
- - **Windows**: `venv\Scripts\activate`
24
- - **MacOS/Linux**: `source venv/bin/activate`
25
-
26
- ### 2. Install Dependencies
27
- `pip install -r requirements.txt`
28
-
29
- - Or manually install:
30
- `pip install streamlit pyomo yfinance seaborn matplotlib numpy pandas`
31
-
32
- ### 3. Install IPOPT Solver
33
- **Windows**: Download IPOPT from COIN-OR IPOPT and add ipopt.exe to your PATH.
34
-
35
- ### 3. Install IPOPT Solver
36
- **Windows**: Download IPOPT from COIN-OR IPOPT https://github.com/coin-or/Ipopt/releases and add ipopt.exe to your PATH.
37
-
38
- **MacOS/Linux**: Install using brew (MacOS) or apt-get (Ubuntu).: Install using brew (MacOS) or apt-get (Ubuntu).
39
-
40
- ### 4. Run the App
41
- streamlit run main.py
42
-
43
-
44
- ### 5. Demo
45
-
46
- ![img.png](img.png)
47
- ![img_1.png](img_1.png)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/README - Zimplaces.rst DELETED
@@ -1,88 +0,0 @@
1
- ============
2
- Zim-Places
3
- ============
4
- .. image:: https://img.shields.io/pypi/v/country_list.svg
5
- :target: https://pypi.org/project/zim-places
6
-
7
- .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
8
- :target: https://github.com/RONALD55/ZimPlaces-Python-Library
9
-
10
- Features
11
- --------
12
-
13
- - This is a python package that allows you to search for cities, provinces, and districts in Zimbabwe.Zimbabwe is split into eight provinces and two cities that are designated as provincial capitals.
14
- Districts are organized into 59 provinces.Wards are organized into 1,200 districts.Visit the project homepage for further information on how to use the package.
15
-
16
-
17
-
18
- Installation
19
- ------------
20
-
21
- To can install the zim_places open shell or terminal and run::
22
-
23
- pip install zim-places
24
-
25
- Usage
26
- -----
27
-
28
- Get all wards:
29
-
30
- .. code-block:: python
31
-
32
- from zim_places import wards
33
- print(wards.get_wards())
34
-
35
- Get all districts:
36
-
37
- .. code-block:: python
38
-
39
- from zim_places import districts
40
- print(districts.get_districts())
41
-
42
- Get all cities:
43
-
44
- .. code-block:: python
45
-
46
- from zim_places import cities
47
- print(cities.get_cities())
48
-
49
- Get all provinces:
50
-
51
- .. code-block:: python
52
-
53
- from zim_places import provinces
54
- print(provinces.get_provinces())
55
-
56
- .. code-block:: python
57
-
58
- from zim_places import *
59
- import json
60
-
61
- # Get the data as json
62
- print(get_cities())
63
- print(get_wards())
64
- print(get_provinces())
65
- print(get_districts())
66
-
67
- # Get the data as a list of dictionaries, remember you can customize the list to suit your need
68
- data = json.loads(get_wards())
69
- list_of_wards = [{i['Ward'] + ' ' + i['Province_OR_District']} for i in data.values()]
70
- print(list_of_wards)
71
-
72
- data = json.loads(get_districts())
73
- list_of_districts = [{i['District'] + ' ' + i['Province']} for i in data.values()]
74
- print(list_of_districts)
75
-
76
- data = json.loads(get_provinces())
77
- list_of_provinces = [{i['Province'] + ' ' + i['Capital'] + i['Area(km2)'] + i['Population(2012 census)']} for i in data.values()]
78
- print(list_of_provinces)
79
-
80
- data = json.loads(get_cities())
81
- list_of_cities = [{i['City'] + ' ' + i['Province']} for i in data.values()]
82
- print(list_of_cities)
83
-
84
-
85
- License
86
- -------
87
-
88
- The project is licensed under the MIT license.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/README - churn.md DELETED
@@ -1,134 +0,0 @@
1
- # Customer Churn Analysis
2
-
3
- ## Project Overview
4
-
5
- This project focuses on analyzing customer data to predict churn in a telecommunications company. The primary objective is to identify key factors that contribute to customer churn and to build a predictive model that can accurately identify customers who are likely to leave. By understanding the drivers of churn, businesses can implement targeted retention strategies to reduce customer attrition.
6
-
7
- ---
8
- ## Table of Contents
9
-
10
- - [Project Overview](#project-overview)
11
- - [Objectives](#objectives)
12
- - [Data Source](#data-source)
13
- - [Methodology](#methodology)
14
- - [1. Data Loading and Initial Exploration](#1-data-loading-and-initial-exploration)
15
- - [2. Data Cleaning and Preprocessing](#2-data-cleaning-and-preprocessing)
16
- - [3. Exploratory Data Analysis (EDA)](#3-exploratory-data-analysis-eda)
17
- - [4. Feature Engineering](#4-feature-engineering)
18
- - [5. Model Building](#5-model-building)
19
- - [6. Model Evaluation](#6-model-evaluation)
20
- - [7. Feature Importance](#7-feature-importance)
21
- - [Libraries and Tools Used](#libraries-and-tools-used)
22
- - [Key Findings and Results](#key-findings-and-results)
23
- - [Conclusion](#conclusion)
24
- - [Future Work](#future-work)
25
- - [How to Run](#how-to-run)
26
- - [Contributors](#contributors)
27
-
28
- ---
29
- ## Objectives
30
-
31
- * To understand the patterns and characteristics of customers who churn versus those who do not.
32
- * To identify the most significant features influencing customer churn.
33
- * To build and evaluate various machine learning models for churn prediction.
34
- * To provide actionable insights for customer retention strategies.
35
- * To analyze the distribution of churn across different customer segments.
36
-
37
- ---
38
- ## Data Source
39
- * **Dataset** : [Download](https://zhang-datasets.s3.us-east-2.amazonaws.com/telcoChurn.csv)
40
- * **Description**: The dataset was sourced from a telecom provider and contains 7043 customer records with 21 features. It includes customer demographics, account information, services subscribed, and churn status.
41
- * **Features**: `customerID`, `gender`, `SeniorCitizen`, `Partner`, `Dependents`, `tenure`, `PhoneService`, `MultipleLines`, `InternetService`, `OnlineSecurity`, `OnlineBackup`, `DeviceProtection`, `TechSupport`, `StreamingTV`, `StreamingMovies`, `Contract`, `PaperlessBilling`, `PaymentMethod`, `MonthlyCharges`, `TotalCharges`, `Churn`
42
- * **Target Variable**: `Churn` (Yes/No)
43
-
44
- ---
45
- ## Methodology
46
-
47
- The project follows a standard data science workflow:
48
-
49
- ### 1. Data Loading and Initial Exploration
50
- * Loaded the dataset using Pandas from a CSV file.
51
- * Performed initial checks:
52
- * **Data Shape**: (7043, 21)
53
- * **Data Types**: Mixed numeric and object types.
54
- * **Basic Statistics**: Examined numerical features using `df.describe()`.
55
- * **Missing Values Check**: Found 11 missing values in `TotalCharges`.
56
-
57
- ### 2. Data Cleaning and Preprocessing
58
- * **Missing Values**: Handled 11 missing values in `TotalCharges` by converting to numeric and dropping NA values.
59
- * **Data Type Conversion**: Converted `TotalCharges` from object to numeric type.
60
- * **Categorical Variable Encoding**: Prepared categorical features for analysis (status: not yet encoded in current notebook).
61
- * **Feature Scaling**: Implemented
62
-
63
- ### 3. Exploratory Data Analysis (EDA)
64
- * **Churn Distribution**: Visualized the target variable, revealing a distribution of 73.4% No Churn and 26.6% Churn.
65
- ![img_5.png](images/img_5.png)
66
-
67
- * **Univariate Analysis**: Examined distributions of numerical features and counts for categorical features.
68
- * **Bivariate Analysis**: Created countplots for all categorical features against churn status to observe relationships.
69
- ![img_7.png](images/img_7.png)
70
- ![img_8.png](images/img_8.png)
71
- ![img_9.png](images/img_9.png)
72
- * **Correlation Analysis**:Implemented
73
- * ![img_6.png](images/img_6.png)
74
-
75
- ### 4. Feature Engineering
76
- * **Feature Selection**: All features were initially considered for analysis.
77
- * **New Features**: Created a tenure group from the tenure feature which was numerical
78
- ![img_10.png](images/img_10.png)
79
-
80
- ### 5. Model Building
81
- * **Data Splitting** : use the 80-20 split cross validation
82
- * **Models Training** : Trained : Logistic Regression , Random Forest , XGBoost, Ada Boost , Gradient Boosting and a simple Neural Network
83
- * **Handling Class Imbalance** : Used SMOT analysis
84
- * **Hyperparameter Tuning** : Used Optuna to do hyper-parameter tuning
85
-
86
- ### 6. Model Evaluation
87
- * **Metrics Used** : AUC-ROC
88
- * **Model Performance Comparison**
89
- ![img_12.png](images/img_12.png)
90
-
91
- * **Best Model Performance**
92
- ![img_11.png](images/img_11.png)
93
-
94
- ### 7. Feature Importance
95
- We used SHAP and LIME for feature importance analysis
96
- ![img.png](images/img.png)
97
- ![img_1.png](images/img_1.png)
98
- ![img_2.png](images/img_2.png)
99
- ![img_3.png](images/img_3.png)
100
- ---
101
- ## Libraries and Tools Used
102
-
103
- * **Python >= 3.10**
104
- * **Pandas**: For data manipulation and analysis.
105
- * **NumPy**: For numerical operations.
106
- * **Matplotlib**: For basic visualization.
107
- * **Seaborn**: For advanced statistical visualizations.
108
- * **Scikit-learn**: Used for classification algorithms (Logistic Regression, Random Forest, Gradient Boosting, AdaBoost, Decision Trees), data preprocessing, model selection, and performance evaluation.
109
- * **XGBoost**: For optimized gradient boosting models.
110
- * **LIME**: For local interpretable model explanations.
111
- * **SHAP**: For model interpretability and feature importance.
112
- * **Optuna**: For hyperparameter tuning.
113
- * **TensorFlow Keras**: For building and training neural networks.
114
- * **Jupyter Notebook**: As the development environment.
115
-
116
- ---
117
- ## Conclusion
118
-
119
- This project identified key churn drivers and built predictive models to flag high-risk customers. **Gradient Boosting** outperformed all models based on AUC-ROC and was selected as the final model. SHAP and LIME provided valuable insights into feature importance, supporting strategic business decisions.
120
-
121
- ## Future Work
122
-
123
- - **Targeted Retention**: Offer personalized discounts or upgrades to high-risk customers.
124
- - **Proactive Support**: Use alerts to flag churn risks and assign dedicated support.
125
- - **Customer Engagement**: Send usage tips and educational content to boost satisfaction.
126
- - **Risk-Based Segmentation**: Tailor campaigns by churn risk (high, medium, low).
127
- - **Real-Time Scoring**: Deploy the model to enable live churn predictions and actions.
128
- - **Model Updates**: Retrain with new data regularly for improved accuracy.
129
-
130
- ---
131
- ## Contributors
132
-
133
- * [Ronald Nyasha Kanyepi](https://www.linkedin.com/in/ronald-nyasha-kanyepi/)
134
- * [GitHub](https://github.com/ronaldkanyep)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/README-Log-Realtime-Analysis.md DELETED
@@ -1,152 +0,0 @@
1
- # Log Realtime Analysis
2
-
3
- ## Overview
4
-
5
- Log Realtime Analysis is a robust real-time log aggregation and visualization system designed to handle high-throughput logs using a Kafka-Spark ETL pipeline. For example, it can process application logs tracking user requests, error rates, and API response times in real-time. It integrates with DynamoDB for real-time metrics storage and visualizes key system insights using Python and Dash Plotly Library. The setup uses Docker for containerized deployment, ensuring seamless development and deployment workflows.
6
-
7
- ## Features
8
-
9
- - **Log Ingestion:** High-throughput log streaming with Kafka.
10
- - **Real-Time Aggregation:** Spark processes logs per minute for metrics like request counts, error rates, and response times.
11
- - **Metrics Storage:** Aggregated metrics stored in DynamoDB for fast querying. DynamoDB is optimized for low-latency, high-throughput queries, making it ideal for real-time dashboard applications.
12
- - **Data Storage:** Historical logs saved in HDFS as Parquet files for long-term analysis.
13
- - **Interactive Dashboard:** Dash application with real-time updates and SLA metrics visualization.
14
-
15
- ## Architecture
16
- ![kafka_flow.gif](ui%2Fassets%2Fkafka_flow.gif)
17
- 1. **Input Topic:** `logging_info` for real-time log ingestion.
18
- - **Purpose:** High-throughput, fault-tolerant log streaming.
19
-
20
- 2. **Real-Time Aggregation with Spark**
21
- - **Processing Logic:** Aggregates logs per minute for metrics like request counts, error rates, and response times.
22
- - **Output Topic:** `agg_logging_info` with structured metrics.
23
-
24
- 3. **Downstream Processing**
25
- - **DynamoDB:** Stores real-time metrics for dashboards with low-latency queries.
26
- - **HDFS:** Stores aggregated logs in Parquet format for long-term analysis.
27
-
28
- 4. **Visualization with Python Dash**
29
-
30
- - **Purpose:** Auto-refreshing dashboards show live system metrics, request rates, error types, and performance insights.
31
-
32
- ---
33
-
34
- ## Dockerized Services
35
-
36
- ### Zookeeper
37
-
38
- - **Image:** `bitnami/zookeeper:latest`
39
- - **Ports:** `2181:2181`
40
- - **Volume:** `${HOST_SHARED_DIR}/zookeeper:/bitnami/zookeeper`
41
-
42
- ### Kafka
43
-
44
- - **Image:** `bitnami/kafka:latest`
45
- - **Ports:** `9092:9092`, `29092:29092`
46
- - **Volume:** `${HOST_SHARED_DIR}/kafka:/bitnami/kafka`
47
-
48
- ### DynamoDB Local
49
-
50
- - **Image:** `amazon/dynamodb-local:latest`
51
- - **Ports:** `8000:8000`
52
- - **Volume:** `${HOST_SHARED_DIR}/dynamodb-local:/data`
53
-
54
- ### DynamoDB Admin
55
-
56
- - **Image:** `aaronshaf/dynamodb-admin`
57
- - **Ports:** `8001:8001`
58
-
59
- ### Spark Jupyter
60
- - **Image:** `jupyter/all-spark-notebook:python-3.11.6`
61
- - **Ports:** `8888:8888`, `4040:4040`
62
- - **Volume:** `${HOST_SHARED_DIR}/spark-jupyter-data:/home/jovyan/data`
63
-
64
- ---
65
-
66
- ## Dashboard
67
-
68
- The Python Dash application provides an intuitive interface for monitoring real-time metrics and logs. Key features include:
69
-
70
- - SLA gauge visualization.
71
- - Log-level distribution pie chart.
72
- - Average response time by API.
73
- - Top APIs with highest error counts.
74
- - Real-time log-level line graph.
75
-
76
- ### Dashboard Components
77
-
78
- 1. **SLA Gauge:** Visualizes the system's SLA percentage.
79
- 2. **Log Level Distribution:** Displays the proportion of different log levels.
80
- 3. **Average Response Time:** Bar chart showing average response times for APIs.
81
- 4. **Top Error-Prone APIs:** Table listing APIs with the highest error counts.
82
- 5. **Log Counts Over Time:** Line chart of log counts aggregated by log levels.
83
-
84
- ![img.png](ui/assets/dashboard-1.png)
85
-
86
- ![img.png](ui/assets/dashboard-2.png)
87
- ---
88
-
89
- ## How to Run
90
-
91
- ### Prerequisites
92
- - Docker and Docker Compose installed.
93
- - Shared directory setup for volume bindings.
94
- - Replace `${HOST_SHARED_DIR}` with your host directory.
95
- - Replace `${IP_ADDRESS}` with your host machine IP.
96
-
97
- ### Steps
98
-
99
- 1. **Start the Services:**
100
- ```bash
101
- docker-compose up -d
102
- ```
103
- 2. **Access Jupyter Notebook:**
104
- Open `http://localhost:8888` or check the logs for the notebook in Docker for the full URL
105
- 3. **Run the Dash App:**
106
- ```bash
107
- python ui/ui-prod.py
108
- ```
109
- Access the dashboard at `http://127.0.0.1:8050`.
110
- 4. **Kafka Setup:**
111
- - Create topics:
112
- ```bash
113
- python kafka/kafka_producer.py
114
- ```
115
-
116
- ---
117
-
118
- ## Data Pipeline
119
-
120
- 1. **Log Generation:** Logs are streamed to Kafka's `airbnb_system_logs` topic.
121
- 2. **Spark Processing:** Spark consumes logs, aggregates them, and produces structured metrics to `agg_airbnb_system_logs`.
122
- 3. **Metrics Storage:** Aggregated data is stored in DynamoDB for real-time querying.
123
- 4. **Long-Term Storage:** Historical logs are stored in HDFS in Parquet format.
124
-
125
- ---
126
-
127
- ## Files
128
-
129
- - `docker-compose.yml`: Docker configuration for services.
130
- - `ui/ui-prod.py`: Dash application for visualizing logs and metrics.
131
- - `kafka/kafka_topic.py`: Script for creating Kafka Topics one for granular logs and the other for aggregate logs from spark.
132
- - `kafka/kafka_producer.py`: Script for simulating logs
133
- - `spark/spark-portfolio.ipynb`: Consumes granular logs from the topic `logging_info` and aggregates the log data by minute intervals, computes statistics (count, avg, max, min response times), and streams the results in JSON format to the Kafka topic`agg_logging_info`
134
- - `spark/spark_kafka.py`: Consumes log messages from a Kafka topic, parses them, and stores aggregated log metrics into a DynamoDB table.
135
-
136
-
137
- ## Future Enhancements
138
-
139
- - Integrate machine learning for anomaly detection.
140
- - Add support for multiple regions in DynamoDB.
141
- - Implement alerting (sms and email) for SLA breaches.
142
- - Enhance dashboard for customizable user settings.
143
- ---
144
-
145
- ## License
146
- This project is licensed under the MIT License.
147
- ---
148
-
149
- ## Contributors
150
- - **Ronald Nyasha Kanyepi** - [GitHub](https://github.com/ronaldkanyepi). For any inquiries, please contact [[email protected]](mailto\:[email protected]).
151
-
152
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/README-OCR-JSON.md DELETED
@@ -1,30 +0,0 @@
1
- ---
2
- title: Zim Docs OCR-to-JSON Extractor
3
- emoji: ⚡
4
- colorFrom: purple
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 5.31.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- ---
12
-
13
- # Zim Docs OCR-to-JSON Extractor
14
- ## Overview
15
-
16
- Welcome to the **Zim Docs OCR-to-JSON Extractor**! This is a powerful and user-friendly web application built with Gradio, designed to help you upload scanned documents (PDFs) or images (PNG, JPG, etc.). It then uses a vision AI model to perform Optical Character Recognition (OCR) and extract structured information into a JSON format. This tool aims to streamline your process of digitizing and organizing data from various document types, such as **driver's licenses, passports, national ID cards, invoices, receipts, and more.**
17
-
18
- ## Requirements
19
-
20
- To use this application, you'll need:
21
- * Python 3.7+
22
- * Gradio
23
- * Gradio-PDF (`gradio_pdf`)
24
- * Requests
25
- * PyMuPDF (`fitz`)
26
- * An API Key from [OpenRouter.ai](https://openrouter.ai/) (or any other service compatible with the OpenAI chat completions API format).
27
- * You should set this key as an environment variable named `API_KEY`. The Python script uses `os.getenv("API_KEY")` to retrieve this key. If you're using Hugging Face Spaces, you can set this as a "Secret".
28
-
29
- ## Running the Application
30
- * **Live Demo:** You can try out a live demo of this application at: [Demo](https://huggingface.co/spaces/NyashaK/DocOCR2JSON)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/profile.json ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "type": "Personal Profile",
4
+ "name": "RONALD NYASHA KANYEPI",
5
+ "summary": "Data Scientist with over 3 years of experience transforming complex financial services and real estate data into actionable business insights. Proven ability to build robust machine learning models and real-time ETL pipelines using Python, SQL, and Spark. Experienced in deploying scalable ML solutions on AWS and GCP using MLflow, Docker, Kubernetes, and FastAPI.",
6
+ "contact": {
7
+ "email": "[email protected]",
8
+ "linkedin": "https://www.linkedin.com/in/ronald-nyasha-kanyepi/",
9
+ "portfolio": "https://ronaldkanyepi.github.io/portfolio-website/",
10
+ "github": "https://github.com/ronaldkanyepi"
11
+ },
12
+ "education": [
13
+ {
14
+ "institution": "EMORY UNIVERSITY",
15
+ "location": "Atlanta, GA",
16
+ "degree": "Master of Science in Business Analytics",
17
+ "graduation_year": 2025
18
+ },
19
+ {
20
+ "institution": "UNIVERSITY OF ZIMBABWE",
21
+ "location": "Harare, Zimbabwe",
22
+ "degree": "Bachelor of Business Studies and Computing Science",
23
+ "graduation_year": 2021,
24
+ "notes": "Graduated with a First Class Honors Degree and was awarded the UZ Book Price (Prize given to the top student)."
25
+ }
26
+ ],
27
+ "professional_experience": [
28
+ {
29
+ "role": "DATA SCIENTIST",
30
+ "company": "Pennybacker Capital - Austin, Texas",
31
+ "dates": "Dec 2024 - May 2025",
32
+ "achievements": [
33
+ "Designed and deployed machine learning models to forecast quarterly Gross Asset Value (GAV) for a $4B+ real estate portfolio achieving 1% forecasting error (MAPE) and helping prevent an estimated $2M in annual losses.",
34
+ "Engineered an integrated data pipeline, consolidating over 50 internal and external data sources on Databricks to create a comprehensive datasets for predictive modeling and analysis.",
35
+ "Initiated and analyzed Google Reviews data to create a sentiment-driven early warning system, identifying operational risks and opportunities for improvement across 11 underperforming multifamily properties.",
36
+ "Translated complex model predictions into actionable business strategy by using SHAP and LIME to interpret feature importance and predictive insights enhancing stakeholder trust and data-driven decision-making."
37
+ ]
38
+ },
39
+ {
40
+ "role": "SENIOR DATA SPECIALIST",
41
+ "company": "AFC Commercial Bank - Harare, Zimbabwe",
42
+ "dates": "Mar 2024 – Jun 2024",
43
+ "achievements": [
44
+ "Led the partnership between OK-Supermarket and AFC Bank for the OK Grand Challenge promotion, driving data-driven marketing strategies; effort generated a 200% increase in POS transactions across 70+ outlets.",
45
+ "Developed a data visualization dashboard using Python, Apache Spark and Dash Plotly to analyze 20000+ ATM and POS terminal activity, providing critical insights and facilitating in-depth analysis and swift resolution of operational issues.",
46
+ "Implemented an XGBoost model to predict point-of-sale client churn, enhancing targeted retention campaign effectiveness by 25% and reducing churn rates by 15% within two months.",
47
+ "Led customer and loan data migration from T24 to IDC Core Banking System, achieving 99.4% accuracy by automating workflows with Python and Apache Spark for faster data cleaning and validation while minimizing downtime."
48
+ ]
49
+ },
50
+ {
51
+ "role": "DATA SPECIALIST",
52
+ "company": "AFC Commercial Bank - Harare, Zimbabwe",
53
+ "dates": "Jun 2022 – Feb 2024",
54
+ "achievements": [
55
+ "Developed a Python backend with FastAPI to integrate the Reserve Bank of Zimbabwe (RBZ) API for the Credit Reference Bureau (CRB), reducing data processing time by 40% while enhancing regulatory compliance.",
56
+ "Built ETL data pipelines using Apache Kafka and Python to integrate data from the core banking system, delivering accurate KPIs across 45 AFC Commercial Bank branches.",
57
+ "Redesigned and optimized merchant reporting services with Apache Airflow and DBT, automating manual processes and increasing efficiency by 80%, while delivering insights on transaction performance to key stakeholders.",
58
+ "Modernized a monolithic reconciliation app into scalable microservices using Docker, Python, FastAPI, Kubernetes and Angular, boosting efficiency by 150%."
59
+ ]
60
+ }
61
+ ],
62
+ "technical_capabilities": {
63
+ "Programming & Machine Learning": ["Python", "R", "SQL", "scikit-learn", "Darts", "Statsmodels", "ARIMA/SARIMA", "TensorFlow", "PyTorch", "LightGBM", "XGBoost", "CatBoost", "Large Language Models (LLMs)", "Retrieval-Augmented Generation (RAG)", "LangChain", "LlamaIndex", "OpenAI APIs", "HuggingFace Transformers", "SHAP", "Optuna (Hyperparameter Tuning)"],
64
+ "Data Engineering & MLOps": ["Apache Spark", "Kafka", "Apache Airflow", "Docker", "Kubernetes", "dbt (data build tool)", "Great Expectations", "AWS S3", "Glue", "EMR", "GCP Cloud Functions", "REST APIs", "Feature Stores", "CI/CD with GitHub Actions", "Model Deployment via Chainlit, MLflow, FastAPI"],
65
+ "Visualization & Analytics": ["Dash (Plotly)", "Streamlit", "Tableau", "Power BI", "Excel", "Matplotlib", "Seaborn", "Time Series Forecasting (Multivariate, Hierarchical)", "A/B Testing", "Uplift Modeling", "Segmentation", "Deep Exploratory Data Analysis (EDA)"],
66
+ "Cloud, Databases & Storage": ["AWS (S3, SageMaker, Redshift)", "GCP (BigQuery, Vertex AI)", "Databricks", "PostgreSQL","MS SQL Server","MySQL", "DynamoDB", "MongoDB", "DuckDB", "Vector Stores (FAISS, Chroma)", "NoSQL", "ElasticSearch", "Parquet", "ORC", "JSON", "Avro"]
67
+ },
68
+ "certifications": [
69
+ "Microsoft Azure AI Fundamentals",
70
+ "Databricks: Generative AI Fundamentals",
71
+ "Oracle SE 11 Java Developer",
72
+ "Akka Reactive Architecture: Domain Driven Design - Level 2",
73
+ "Akka Reactive Architecture: Introduction to Reactive Systems - Level 2"
74
+ ]
75
+ },
76
+ {
77
+ "type": "Project",
78
+ "project_name": "Customer Churn Analysis",
79
+ "summary": "This project focuses on analyzing customer data to predict churn in a telecommunications company. The primary objective is to identify key factors that contribute to customer churn and to build a predictive model that can accurately identify customers who are likely to leave.",
80
+ "my_role_and_achievements": [
81
+ "Handled missing values in 'TotalCharges' and converted data types for analysis.",
82
+ "Performed Exploratory Data Analysis (EDA), visualizing the churn distribution which was 26.6% Churn.",
83
+ "Trained multiple models including Logistic Regression,Gradient Boost, Random Forest, XGBoost, and a simple Neural Network.",
84
+ "Used SMOTE to handle class imbalance and Optuna for hyper-parameter tuning.",
85
+ "The Gradient Boosting model was selected as the final model based on AUC-ROC performance.",
86
+ "Used SHAP and LIME for feature importance analysis."
87
+ ],
88
+ "technologies": ["Python", "Pandas", "NumPy", "Matplotlib", "Seaborn", "Scikit-learn", "XGBoost", "LIME", "SHAP", "Optuna", "TensorFlow Keras"],
89
+ "source_url": "https://github.com/ronaldkanyepi/Customer-Churn-Analysis"
90
+ },
91
+ {
92
+ "type": "Project",
93
+ "project_name": "Health Trends in Southern Africa: A 2013-2020 Overview",
94
+ "summary": "This project visualizes key health indicators in Southern Africa between 2013 and 2020, leveraging data from the World Bank. The focus is on life expectancy, infant mortality rates, maternal mortality ratios, and HIV prevalence across Zimbabwe, Botswana, Mozambique, and South Africa.",
95
+ "my_role_and_achievements": [
96
+ "Utilized the World Bank API to source data.",
97
+ "Created multiple visualizations including a line chart for life expectancy, a bar chart for infant mortality, a box plot for HIV prevalence, and a heatmap for maternal mortality ratios.",
98
+ "Arranged multiple plots into a cohesive dashboard visualization."
99
+ ],
100
+ "technologies": ["R", "ggplot2", "tidyr", "dplyr", "gridExtra", "reshape2", "viridis", "patchwork", "ggtext"],
101
+ "source_url": "https://github.com/ronaldkanyepi/Southern-Africa-Health-Indicators-Analysis/tree/main"
102
+ },
103
+ {
104
+ "type": "Project",
105
+ "project_name": "Portfolio Optimization with Streamlit and Pyomo",
106
+ "summary": "This project optimizes stock portfolios by selecting up to 10 tickers and a custom date range. It uses Pyomo for optimization to minimize risk while targeting a desired return. The app displays allocations, returns, risk, and correlation heatmaps.",
107
+ "my_role_and_achievements": [
108
+ "Developed a Streamlit application for user interaction.",
109
+ "Used yfinance to fetch stock data for custom date ranges.",
110
+ "Implemented portfolio optimization logic using the Pyomo library.",
111
+ "Installed the IPOPT solver to handle the optimization calculations.",
112
+ "Visualized results, including a heatmap of stock correlations."
113
+ ],
114
+ "technologies": ["Python", "Streamlit", "Pyomo", "yfinance", "seaborn", "matplotlib", "numpy", "pandas"],
115
+ "source_url": "https://github.com/ronaldkanyepi/Portfolio-Optimization-Pyomo"
116
+ },
117
+ {
118
+ "type": "Project",
119
+ "project_name": "Zim-Places Python Package",
120
+ "summary": "A Python package that allows you to search for cities, provinces, and districts in Zimbabwe. Zimbabwe is split into eight provinces and two cities, with 59 districts and 1,200 wards.",
121
+ "my_role_and_achievements": [
122
+ "Developed and published the 'zim-places' package to PyPI.",
123
+ "Provided functions to get all wards, districts, cities, and provinces.",
124
+ "Showed examples of how to get data as JSON and convert it into customized lists of dictionaries."
125
+ ],
126
+ "technologies": ["Python", "PyPI", "JSON"],
127
+ "source_url": "https://pypi.org/project/zim-places"
128
+ },
129
+ {
130
+ "type": "Project",
131
+ "project_name": "Log Real-Time Analysis",
132
+ "summary": "A robust real-time log aggregation and visualization system designed to handle high-throughput logs (e.g., 60,000 events/sec) using a Kafka-Spark ETL pipeline. It integrates with DynamoDB for metrics storage and visualizes insights using a Dash Plotly dashboard.",
133
+ "my_role_and_achievements": [
134
+ "Designed a scalable architecture for real-time log processing and visualization.",
135
+ "Handled log ingestion with Kafka and real-time aggregation with Spark, which processed logs per minute.",
136
+ "Stored aggregated metrics in DynamoDB for fast querying and historical logs in HDFS as Parquet files.",
137
+ "Developed an interactive dashboard in Dash with real-time updates for SLA metrics, error rates, and response times.",
138
+ "Containerized the entire architecture using Docker-compose, including Zookeeper, Kafka, DynamoDB, and a Spark-Jupyter environment."
139
+ ],
140
+ "technologies": ["Python", "Apache Kafka", "Apache Spark", "DynamoDB", "HDFS", "Parquet", "Docker", "Dash", "Plotly"],
141
+ "source_url": "https://github.com/ronaldkanyepi/Log-Realtime-Analysis"
142
+ },
143
+ {
144
+ "type": "Project",
145
+ "project_name": "Zim Docs OCR-to-JSON Extractor",
146
+ "summary": "A web application built with Gradio that allows users to upload scanned documents (PDFs) or images. It uses a vision AI model to perform OCR and extract structured information into a JSON format for various document types like licenses, passports, and invoices.",
147
+ "my_role_and_achievements": [
148
+ "Built a user-friendly web application using Gradio.",
149
+ "Integrated a vision AI model to perform OCR and structured data extraction.",
150
+ "Handled both PDF and image file uploads using Gradio-PDF and PyMuPDF.",
151
+ "Managed API key integration via environment variables for use with services like OpenRouter.ai, making it compatible with Hugging Face Spaces secrets."
152
+ ],
153
+ "technologies": ["Python", "Gradio", "Gradio-PDF", "PyMuPDF (fitz)", "OpenAI-compatible APIs"],
154
+ "source_url": {"demo":"https://huggingface.co/spaces/NyashaK/DocOCR2JSON","github": "https://github.com/ronaldkanyepi/docs-ocr-2-json"}
155
+ }
156
+ ]
data/profile.txt DELETED
@@ -1,69 +0,0 @@
1
- Name : RONALD NYASHA KANYEPI
2
- Mobile : (678) 939–0239
3
- Email : [email protected]
4
- Linked In : https://www.linkedin.com/in/ronald-nyasha-kanyepi/
5
- Portfolio : https://ronaldkanyepi.github.io/portfolio-website/
6
- Github : https://github.com/ronaldkanyepi
7
-
8
-
9
- PROFESSIONAL SUMMARY
10
- Data Scientist with 3+ years of experience transforming complex financial services and real estate data into actionable business insights. Proven ability to build robust machine learning models and real-time ETL pipelines using Python, SQL, and Spark. Experienced in deploying scalable ML solutions on AWS and GCP using MLflow, Docker, Kubernetes, and FastAPI.
11
-
12
-
13
- EDUCATION
14
- EMORY UNIVERSITY Atlanta, GA
15
- Master of Science in Business Analytics graduated in May 2025
16
-
17
-
18
- UNIVERSITY OF ZIMBABWE Harare, Zimbabwe
19
- Bachelor of Business Studies and Computing Science graduated in Dec 2021
20
- I was the top student in the class graduated with a First Class Honors Degree and I was awarded the UZ Book Price (Prize given to the top student)
21
-
22
-
23
- PROFESSIONAL EXPERIENCE
24
- DATA SCIENTIST | Pennybacker Capital - Austin, Texas Dec 2024 -May 2025
25
- Designed and deployed machine learning models to forecast quarterly Gross Asset Value (GAV) for a $4B+ real estate portfolio achieving 1% forecasting error (MAPE) and helping prevent an estimated $2M in annual losses.
26
- Engineered an integrated data pipeline, consolidating over 50 internal and external data sources on Databricks to create a comprehensive datasets for predictive modeling and analysis.
27
- Initiated and analyzed Google Reviews data to create a sentiment-driven early warning system, identifying operational risks and opportunities for improvement across 11 underperforming multifamily properties.
28
- Translated complex model predictions into actionable business strategy by using SHAP and LIME to interpret feature importance and predictive insights enhancing stakeholder trust and data-driven decision-making.
29
-
30
-
31
- SENIOR DATA SPECIALIST | AFC Commercial Bank - Harare, Zimbabwe Mar 2024 – Jun 2024
32
- Led the partnership between OK-Supermarket and AFC Bank for the OK Grand Challenge promotion, driving data-driven marketing strategies; effort generated a 200% increase in POS transactions across 70+ outlets.
33
- Developed a data visualization dashboard using Python, Apache Spark and Dash Plotly to analyze 20000+ ATM and POS terminal activity, providing critical insights and facilitating in-depth analysis and swift resolution of operational issues.
34
- Implemented an XGBoost model to predict point-of-sale client churn, enhancing targeted retention campaign effectiveness by 25% and reducing churn rates by 15% within two months.
35
- Led customer and loan data migration from T24 to IDC Core Banking System, achieving 99.4% accuracy by automating workflows with Python and Apache Spark for faster data cleaning and validation while minimizing downtime.
36
-
37
-
38
- DATA SPECIALIST | AFC Commercial Bank - Harare, Zimbabwe Jun 2022 – Feb 2024
39
- Developed a Python backend with FastAPI to integrate the Reserve Bank of Zimbabwe (RBZ) web service for the Credit Reference Bureau (CRB), reducing data processing time by 40% while enhancing regulatory compliance.
40
- Built ETL data pipelines using Apache Kafka and Python to integrate data from the core banking system, delivering accurate account data metrics across 45 AFC Commercial Bank branches.
41
- Redesigned and optimized merchant reporting services with Apache Airflow and DBT, automating manual processes and increasing efficiency by 80%, while delivering insights on transaction performance to key stakeholders.
42
- Modernized a monolithic reconciliation app into scalable microservices using Docker, Python, FastAPI, Kubernetes and Angular, boosting efficiency by 150%.
43
-
44
- SELECTED PROJECTS
45
- Log-Realtime-Analysis Project Dec 2024
46
- Designed a scalable architecture for real-time log processing and visualization, handling 60,000 log events per second using a Kafka-Spark ETL pipeline, DynamoDB for real-time metric storage, and Python Dash for interactive dashboards.
47
- Sports Ticket Sales Forecasting Feb 2025
48
- Achieved 3.3% forecast error in predicting Atlanta Braves ticket sales, the best in the competition. Developed XGBoost and LSTM models, integrating attendance, promotions and weather data to enhance forecasting precision.
49
- At AFC Bank I created a FlexiXpress remittance application. I was also part of the team that created the backend for USSD and mobile banking application.
50
-
51
- TECHNICAL CAPABILITIES
52
- Programming & Machine Learning
53
- Python, R, SQL • scikit-learn, Darts, Statsmodels, ARIMA/SARIMA • TensorFlow, PyTorch • LightGBM, XGBoost, CatBoost • Large Language Models (LLMs) • Retrieval-Augmented Generation (RAG) • LangChain, LlamaIndex, OpenAI APIs • HuggingFace Transformers • SHAP, Optuna (Hyperparameter Tuning)
54
-
55
- Data Engineering & MLOps
56
- Apache Spark, Kafka, Apache Airflow, Docker, Kubernetes • dbt (data build tool), Great Expectations • AWS S3, Glue, EMR • GCP Cloud Functions • REST APIs • Feature Stores • CI/CD with GitHub Actions • Model Deployment via Chainlit, MLflow, FastAPI
57
-
58
- Visualization & Analytics
59
- Dash (Plotly), Streamlit, Tableau, Power BI, Excel • Matplotlib, Seaborn • Time Series Forecasting (Multivariate, Hierarchical) • A/B Testing, Uplift Modeling, Segmentation • Deep Exploratory Data Analysis (EDA)
60
-
61
- Cloud, Databases & Storage
62
- AWS (S3, SageMaker, Redshift), GCP (BigQuery, Vertex AI), Databricks • PostgreSQL, MySQL, DynamoDB, MongoDB, DuckDB • Vector Stores (FAISS, Chroma) • NoSQL, ElasticSearch • Parquet, ORC, JSON, Avro
63
-
64
- Certifications
65
- Microsoft Azure AI Fundamentals
66
- Databricks: Generative AI Fundamentals
67
- Oracle SE 11 Java Developer
68
- Akka Reactive Architecture: Domain Driven Design - Level 2
69
- Akka Reactive Architecture: Introduction to Reactive Systems - Level 2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.txt CHANGED
@@ -3,4 +3,5 @@ llama-index-core~=0.12.41
3
  llama-index-embeddings-huggingface~=0.5.4
4
  llama-index-llms-openrouter~=0.3.2
5
  loguru
6
- websockets
 
 
3
  llama-index-embeddings-huggingface~=0.5.4
4
  llama-index-llms-openrouter~=0.3.2
5
  loguru
6
+ websockets
7
+