FarhinSadia commited on
Commit
00a8f8d
·
1 Parent(s): 477a96e

Feat: Add strategic overview, KPIs, and action items tabs

Browse files
.gitignore CHANGED
@@ -1,38 +1,12 @@
1
- # Environment variables
2
- .env
3
- .env.local
4
-
5
- # Data files (general exclusion)
6
- *.csv
7
- *.txt
8
- data/raw/*
9
- data/processed/*
10
 
11
- # BUT include these specific files for deployment
12
- !data/uploads/other_banks_comments.csv
13
- !data/uploads/other_banks_posts.csv
14
- !data/uploads/Prime_bank_Review_posts_manual.txt
15
- !data/uploads/prime_bank_comments.csv
16
- !data/uploads/prime_bank_posts.csv
17
 
18
- # Python
19
  __pycache__/
20
- *.py[cod]
21
- *$py.class
22
- *.so
23
- .Python
24
-
25
- # Streamlit
26
- .streamlit/secrets.toml
27
-
28
- # IDE
29
- .vscode/
30
- .idea/
31
-
32
- # OS
33
- .DS_Store
34
- Thumbs.db
35
 
36
- # Keep empty directories
37
- !data/raw/.gitkeep
38
- !data/processed/.gitkeep
 
1
+ # .gitignore
 
 
 
 
 
 
 
 
2
 
3
+ # Ignore the backup folder with real data
4
+ _real_data_backup/
 
 
 
 
5
 
6
+ # Ignore Python cache and environment files
7
  __pycache__/
8
+ *.pyc
9
+ .env
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
+ # You can also ignore the local Streamlit config if you have one
12
+ .streamlit/config.toml
 
app.py CHANGED
@@ -16,250 +16,199 @@ st.set_page_config(
16
 
17
  # --- Helper function to identify text column ---
18
  def find_text_column(df):
19
- """Find the text column in a dataframe"""
20
- if df.empty:
21
- return None
22
-
23
- # Common text column names
24
- text_columns = ['text', 'Text', 'content', 'Content', 'message', 'Message',
25
- 'review', 'Review', 'comment', 'Comment', 'post', 'Post',
26
- 'review_text', 'Review Text', 'post_text', 'Post Text',
27
- 'comment_text', 'Comment Text', 'description', 'Description',
28
- 'Review', 'Post Content', 'Comment Content']
29
-
30
  for col in text_columns:
31
- if col in df.columns:
32
- return col
33
-
34
- # If no standard column found, look for columns containing certain keywords
35
  for col in df.columns:
36
  col_lower = col.lower()
37
- if any(keyword in col_lower for keyword in ['text', 'content', 'message', 'review', 'comment', 'post']):
38
- return col
39
-
40
- # If still no column found, check if there's a column with string data
41
  for col in df.columns:
42
  if df[col].dtype == 'object':
43
- # Check if it contains text-like content
44
  sample = df[col].dropna().head()
45
- if len(sample) > 0:
46
- # Check if values are strings and have reasonable length
47
  try:
48
- avg_length = sample.astype(str).str.len().mean()
49
- if avg_length > 20: # Assume text content is longer than 20 chars
50
- return col
51
- except:
52
- continue
53
-
54
  return None
55
 
56
  # --- Caching for Performance ---
57
  @st.cache_data
58
  def load_and_process_data():
59
- """
60
- Loads data by differentiating between posts and comments, processes them,
61
- and generates insights with robust handling for missing file types.
62
- """
63
  DATA_DIR = 'data/uploads'
 
64
 
65
- # Get all files
66
  all_files = glob.glob(os.path.join(DATA_DIR, '*'))
67
-
68
- # Separate files by type
69
- post_files = []
70
- comment_files = []
71
- txt_files = []
72
- other_csv_files = []
73
-
74
- for file_path in all_files:
75
- filename = os.path.basename(file_path).lower()
76
- if filename.endswith('.csv'):
77
- if 'post' in filename:
78
- post_files.append(file_path)
79
- elif 'comment' in filename:
80
- comment_files.append(file_path)
81
- else:
82
- # Files like prime_bank_analysis.csv might be posts
83
- other_csv_files.append(file_path)
84
- elif filename.endswith('.txt'):
85
- txt_files.append(file_path)
86
 
87
- def read_files_to_dataframe(files_list, file_type="general"):
88
  dfs = []
89
  for f in files_list:
90
  try:
91
  if f.endswith('.csv'):
92
- # Try different encodings
93
- for encoding in ['utf-8', 'latin-1', 'iso-8859-1']:
94
- try:
95
- df = pd.read_csv(f, encoding=encoding, on_bad_lines='skip')
96
- break
97
- except UnicodeDecodeError:
98
- continue
99
- else:
100
- st.error(f"Could not read {os.path.basename(f)} with any encoding")
101
- continue
102
-
103
- # Find text column
104
- text_col = find_text_column(df)
105
-
106
- if text_col is None:
107
- st.warning(f"Could not find text column in {os.path.basename(f)}. Skipping...")
108
- continue
109
-
110
- # Rename text column to 'text'
111
- if text_col != 'text':
112
- df = df.rename(columns={text_col: 'text'})
113
-
114
- else: # txt files
115
  with open(f, 'r', encoding='utf-8') as file:
116
- content = file.read()
117
- posts = content.split('\n')
118
- df = pd.DataFrame({'text': [p.strip() for p in posts if p.strip()]})
 
 
119
 
120
- # Add source file info
121
  df['source_file'] = os.path.basename(f)
122
  df['file_type'] = file_type
123
-
124
- # Only keep non-empty text
125
  df = df[df['text'].notna() & (df['text'].str.strip() != '')]
126
-
127
- if not df.empty:
128
- dfs.append(df)
129
-
130
  except Exception as e:
131
  st.error(f"Error reading {os.path.basename(f)}: {e}")
132
-
133
  return pd.concat(dfs, ignore_index=True) if dfs else pd.DataFrame()
134
 
135
- # Read all files
136
- raw_posts_df = read_files_to_dataframe(post_files + other_csv_files, 'post')
137
- raw_comments_df = read_files_to_dataframe(comment_files + txt_files, 'comment')
138
-
139
- # If no posts found, check if we have any CSV files to use as posts
140
- if raw_posts_df.empty and other_csv_files:
141
- st.info("No files with 'post' in filename found. Using all CSV files as posts.")
142
- raw_posts_df = read_files_to_dataframe(other_csv_files, 'post')
143
 
144
- # Process the data
145
  processor = DataProcessor()
146
-
147
- processed_posts_df = processor.process_all_data(raw_posts_df) if not raw_posts_df.empty else pd.DataFrame()
148
- processed_comments_df = processor.process_all_data(raw_comments_df) if not raw_comments_df.empty else pd.DataFrame()
149
 
150
- # Combine all text for analysis
151
  all_text_df = pd.concat([processed_posts_df, processed_comments_df], ignore_index=True)
 
152
 
153
- if all_text_df.empty:
154
- return pd.DataFrame(), pd.DataFrame(), None
155
-
156
- # Generate insights
157
  insight_gen = InsightsGenerator()
158
- insights = insight_gen.generate_all_insights(
159
- posts_df=processed_posts_df,
160
- all_text_df=all_text_df
161
- )
162
 
163
  return processed_posts_df, all_text_df, insights
164
 
165
  # --- Main Application ---
166
  st.title("🏦 Prime Bank Social Media Analytics")
167
 
168
- # Load and process data
169
  posts_df, all_text_df, insights = load_and_process_data()
170
 
171
  if all_text_df.empty or insights is None:
172
- st.error("No data files found or processed in 'data/uploads'. Please check your files.")
173
- st.info("Expected file formats: CSV files with text content, or TXT files with reviews/comments")
174
  st.stop()
175
 
176
  # Filter for Prime Bank mentions
177
- prime_posts_df = posts_df[posts_df['prime_mentions'] > 0].copy() if not posts_df.empty and 'prime_mentions' in posts_df.columns else pd.DataFrame()
178
- prime_all_text_df = all_text_df[all_text_df['prime_mentions'] > 0].copy() if not all_text_df.empty and 'prime_mentions' in all_text_df.columns else pd.DataFrame()
179
 
180
  # --- KPI Section ---
181
- st.header("📈 Prime Bank Mention KPIs")
182
- kpi1, kpi2 = st.columns(2)
183
- total_mentions = all_text_df['prime_mentions'].sum() if 'prime_mentions' in all_text_df.columns else 0
184
  total_posts_with_mentions = len(prime_posts_df)
185
- kpi1.metric(
186
- label="Total Prime Bank Mentions (in Posts & Comments)",
187
- value=f"{int(total_mentions):,}"
188
- )
189
- kpi2.metric(
190
- label="Total Posts Mentioning Prime Bank",
191
- value=f"{total_posts_with_mentions:,}"
192
- )
193
  st.markdown("---")
194
 
195
  # --- Tabbed Interface ---
196
- tab1, tab2, tab3 = st.tabs(["Sentiment & Virality (Posts)", "Emotion & Categories (All Text)", "Full Data View"])
 
 
 
 
 
 
197
 
198
  # --- Tab 1: Posts Only Analysis ---
199
  with tab1:
200
  st.header("Sentiment & Virality Analysis (Posts Only)")
201
-
202
  if not prime_posts_df.empty:
203
  col1, col2 = st.columns([1, 2])
204
  with col1:
205
  st.subheader("Sentiment of Posts")
206
  st.plotly_chart(create_sentiment_pie(prime_posts_df), use_container_width=True)
207
- with st.expander("Read Sentiment Insights"):
208
- sentiment_insight = insights.get('sentiment', {})
209
- st.markdown(f"**Summary:** {sentiment_insight.get('summary', 'N/A')}")
210
- st.markdown(f"**Positive Themes:** {sentiment_insight.get('positive_themes', 'N/A')}")
211
- st.markdown(f"**Negative Themes:** {sentiment_insight.get('negative_themes', 'N/A')}")
212
- st.write("**Examples of Negative Posts:**")
213
- for example in sentiment_insight.get('negative_examples', []):
214
- if example:
215
- st.warning(f"- \"{example[:150]}...\"" if len(example) > 150 else f"- \"{example}\"")
216
-
217
  with col2:
218
  st.subheader("Top Viral Posts")
219
- st.plotly_chart(create_viral_posts_chart(prime_posts_df), use_container_width=True)
 
 
 
 
220
  else:
221
  st.info("No posts mentioning Prime Bank were found in the data.")
222
 
223
- # --- Tab 2: Posts and Comments Analysis ---
224
  with tab2:
225
  st.header("Emotion & Category Analysis (Posts & Comments)")
226
-
227
  if not prime_all_text_df.empty:
228
  col1, col2 = st.columns(2)
229
  with col1:
230
  st.subheader("Emotion Detection")
231
  st.plotly_chart(create_emotion_bar(prime_all_text_df), use_container_width=True)
232
- with st.expander("Read Emotion Insights"):
233
- emotion_insight = insights.get('emotion', {})
234
- st.markdown(f"**Summary:** {emotion_insight.get('summary', 'N/A')}")
235
-
236
- for emotion, data in emotion_insight.get('details', {}).items():
237
- st.markdown(f"**{emotion} is often about:** {data.get('themes', 'N/A')}")
238
- if data.get('example') and data['example'] != "N/A":
239
- st.write("Example:")
240
- example_text = data['example']
241
- st.info(f"- \"{example_text[:150]}...\"" if len(example_text) > 150 else f"- \"{example_text}\"")
242
-
243
  with col2:
244
  st.subheader("Post & Comment Categories")
245
  st.plotly_chart(create_category_donut(prime_all_text_df), use_container_width=True)
246
- with st.expander("Read Category Insights"):
247
- category_insight = insights.get('category', {})
248
- st.markdown(f"**Summary:** {category_insight.get('summary', 'N/A')}")
249
- for category, data in category_insight.get('details', {}).items():
250
- st.markdown(f"**{category} topics include:** {data.get('themes', 'N/A')}")
251
  else:
252
- st.info("No posts or comments mentioning Prime Bank were found in the data.")
253
 
254
- # --- Tab 3: Data View ---
255
  with tab3:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  st.header("Explore the Raw and Processed Data")
257
-
258
  if not posts_df.empty:
259
  st.subheader("Processed Posts Data")
260
- st.dataframe(posts_df.head(100)) # Show first 100 rows
261
-
262
- if not all_text_df.empty and len(all_text_df) > len(posts_df):
 
263
  st.subheader("Processed Comments & Reviews Data")
264
- comments_df = all_text_df[all_text_df['file_type'] == 'comment'] if 'file_type' in all_text_df.columns else all_text_df.iloc[len(posts_df):]
265
- st.dataframe(comments_df.head(100)) # Show first 100 rows
 
16
 
17
  # --- Helper function to identify text column ---
18
  def find_text_column(df):
19
+ if df.empty: return None
20
+ text_columns = [
21
+ 'text', 'Text', 'content', 'Content', 'message', 'Message',
22
+ 'review', 'Review', 'comment', 'Comment', 'post', 'Post',
23
+ 'review_text', 'Review Text', 'post_text', 'Post Text',
24
+ 'comment_text', 'Comment Text', 'description', 'Description'
25
+ ]
 
 
 
 
26
  for col in text_columns:
27
+ if col in df.columns: return col
 
 
 
28
  for col in df.columns:
29
  col_lower = col.lower()
30
+ if any(keyword in col_lower for keyword in ['text', 'content', 'review', 'comment', 'post']): return col
 
 
 
31
  for col in df.columns:
32
  if df[col].dtype == 'object':
 
33
  sample = df[col].dropna().head()
34
+ if not sample.empty:
 
35
  try:
36
+ if sample.astype(str).str.len().mean() > 20: return col
37
+ except: continue
 
 
 
 
38
  return None
39
 
40
  # --- Caching for Performance ---
41
  @st.cache_data
42
  def load_and_process_data():
 
 
 
 
43
  DATA_DIR = 'data/uploads'
44
+ if not os.path.exists(DATA_DIR): os.makedirs(DATA_DIR)
45
 
 
46
  all_files = glob.glob(os.path.join(DATA_DIR, '*'))
47
+ if not all_files: return pd.DataFrame(), pd.DataFrame(), None
48
+
49
+ post_files = [f for f in all_files if 'post' in os.path.basename(f).lower() and f.endswith('.csv')]
50
+ comment_files = [f for f in all_files if 'comment' in os.path.basename(f).lower() and f.endswith('.csv')]
51
+ txt_files = [f for f in all_files if f.endswith('.txt')]
52
+ other_csv_files = [f for f in all_files if f.endswith('.csv') and f not in post_files and f not in comment_files]
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
+ def read_files(files_list, file_type):
55
  dfs = []
56
  for f in files_list:
57
  try:
58
  if f.endswith('.csv'):
59
+ df = pd.read_csv(f, on_bad_lines='skip')
60
+ else: # txt
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  with open(f, 'r', encoding='utf-8') as file:
62
+ df = pd.DataFrame({'text': [p.strip() for p in file.read().split('\n') if p.strip()]})
63
+
64
+ text_col = find_text_column(df)
65
+ if not text_col: continue
66
+ if text_col != 'text': df = df.rename(columns={text_col: 'text'})
67
 
 
68
  df['source_file'] = os.path.basename(f)
69
  df['file_type'] = file_type
 
 
70
  df = df[df['text'].notna() & (df['text'].str.strip() != '')]
71
+ if not df.empty: dfs.append(df)
 
 
 
72
  except Exception as e:
73
  st.error(f"Error reading {os.path.basename(f)}: {e}")
 
74
  return pd.concat(dfs, ignore_index=True) if dfs else pd.DataFrame()
75
 
76
+ raw_posts_df = read_files(post_files + other_csv_files, 'post')
77
+ raw_comments_df = read_files(comment_files + txt_files, 'comment')
 
 
 
 
 
 
78
 
 
79
  processor = DataProcessor()
80
+ processed_posts_df = processor.process_all_data(raw_posts_df)
81
+ processed_comments_df = processor.process_all_data(raw_comments_df)
 
82
 
 
83
  all_text_df = pd.concat([processed_posts_df, processed_comments_df], ignore_index=True)
84
+ if all_text_df.empty: return pd.DataFrame(), pd.DataFrame(), None
85
 
 
 
 
 
86
  insight_gen = InsightsGenerator()
87
+ insights = insight_gen.generate_all_insights(posts_df=processed_posts_df, all_text_df=all_text_df)
 
 
 
88
 
89
  return processed_posts_df, all_text_df, insights
90
 
91
  # --- Main Application ---
92
  st.title("🏦 Prime Bank Social Media Analytics")
93
 
 
94
  posts_df, all_text_df, insights = load_and_process_data()
95
 
96
  if all_text_df.empty or insights is None:
97
+ st.error("No data files found or processed in 'data/uploads'. Please add CSV or TXT files.")
98
+ st.info("Ensure filenames contain 'post' for post data or 'comment' for comment data for best results.")
99
  st.stop()
100
 
101
  # Filter for Prime Bank mentions
102
+ prime_posts_df = posts_df[posts_df['prime_mentions'] > 0].copy() if 'prime_mentions' in posts_df.columns else pd.DataFrame()
103
+ prime_all_text_df = all_text_df[all_text_df['prime_mentions'] > 0].copy() if 'prime_mentions' in all_text_df.columns else pd.DataFrame()
104
 
105
  # --- KPI Section ---
106
+ st.header("📈 Prime Bank Key Performance Indicators")
107
+ total_mentions = all_text_df['prime_mentions'].sum()
 
108
  total_posts_with_mentions = len(prime_posts_df)
109
+ new_metrics = create_summary_metrics(all_text_df)
110
+
111
+ kpi1, kpi2, kpi3, kpi4 = st.columns(4)
112
+ kpi1.metric("Total Mentions (Posts & Comments)", f"{int(total_mentions):,}")
113
+ kpi2.metric("Posts Mentioning Prime Bank", f"{total_posts_with_mentions:,}")
114
+ kpi3.metric("Bank Sentiment Score", new_metrics['Bank Sentiment Score'], help="Positive Mentions - Negative Mentions. A positive score is good.")
115
+ kpi4.metric("Engagement-Weighted Sentiment", new_metrics['Engagement-Weighted Sentiment'], help="A combined score of sentiment polarity and virality (likes, shares, etc.). Higher is better.")
 
116
  st.markdown("---")
117
 
118
  # --- Tabbed Interface ---
119
+ tab1, tab2, tab3, tab4, tab5 = st.tabs([
120
+ "Sentiment & Virality (Posts)",
121
+ "Emotion & Categories (All Text)",
122
+ "Strategic Overview",
123
+ "Action Items",
124
+ "Full Data View"
125
+ ])
126
 
127
  # --- Tab 1: Posts Only Analysis ---
128
  with tab1:
129
  st.header("Sentiment & Virality Analysis (Posts Only)")
 
130
  if not prime_posts_df.empty:
131
  col1, col2 = st.columns([1, 2])
132
  with col1:
133
  st.subheader("Sentiment of Posts")
134
  st.plotly_chart(create_sentiment_pie(prime_posts_df), use_container_width=True)
 
 
 
 
 
 
 
 
 
 
135
  with col2:
136
  st.subheader("Top Viral Posts")
137
+ viral_chart = create_viral_posts_chart(prime_posts_df)
138
+ if viral_chart:
139
+ st.plotly_chart(viral_chart, use_container_width=True)
140
+ else:
141
+ st.info("No viral score data (likes, shares, comments) found to display chart.")
142
  else:
143
  st.info("No posts mentioning Prime Bank were found in the data.")
144
 
145
+ # --- Tab 2: All Text Analysis ---
146
  with tab2:
147
  st.header("Emotion & Category Analysis (Posts & Comments)")
 
148
  if not prime_all_text_df.empty:
149
  col1, col2 = st.columns(2)
150
  with col1:
151
  st.subheader("Emotion Detection")
152
  st.plotly_chart(create_emotion_bar(prime_all_text_df), use_container_width=True)
 
 
 
 
 
 
 
 
 
 
 
153
  with col2:
154
  st.subheader("Post & Comment Categories")
155
  st.plotly_chart(create_category_donut(prime_all_text_df), use_container_width=True)
 
 
 
 
 
156
  else:
157
+ st.info("No text mentioning Prime Bank was found in the data.")
158
 
159
+ # --- Tab 3: Strategic Overview ---
160
  with tab3:
161
+ st.header("Strategic Overview")
162
+ st.write("High-level insights into market position and geographic distribution.")
163
+ col1, col2 = st.columns(2)
164
+ with col1:
165
+ bank_comp_chart = create_bank_comparison_chart(all_text_df)
166
+ if bank_comp_chart:
167
+ st.plotly_chart(bank_comp_chart, use_container_width=True)
168
+ else:
169
+ st.info("Not enough data to compare bank mentions.")
170
+ with col2:
171
+ geo_map = create_geolocation_map(all_text_df)
172
+ if geo_map:
173
+ st.plotly_chart(geo_map, use_container_width=True)
174
+ else:
175
+ st.info("No 'location' column found in data to generate map.")
176
+
177
+ # --- Tab 4: Action Items ---
178
+ with tab4:
179
+ st.header("Posts & Comments That Need Attention")
180
+ st.write("A prioritized list of negative or inquiry-based comments mentioning Prime Bank.")
181
+
182
+ if not prime_all_text_df.empty:
183
+ attention_df = prime_all_text_df[
184
+ (prime_all_text_df['sentiment'] == 'Negative') |
185
+ (prime_all_text_df['category'].isin(['Complaint', 'Inquiry']))
186
+ ].copy()
187
+
188
+ if not attention_df.empty:
189
+ attention_df['priority_score'] = (
190
+ (attention_df['sentiment'] == 'Negative') * 2 +
191
+ (attention_df['category'] == 'Complaint') * 1.5 +
192
+ (attention_df['category'] == 'Inquiry') * 1
193
+ )
194
+ attention_df.sort_values(by='priority_score', ascending=False, inplace=True)
195
+
196
+ st.dataframe(attention_df[[
197
+ 'text', 'sentiment', 'category', 'emotion', 'viral_score'
198
+ ]], use_container_width=True)
199
+ else:
200
+ st.success("✅ No negative comments or inquiries found that require attention.")
201
+ else:
202
+ st.info("No data mentioning Prime Bank to analyze for action items.")
203
+
204
+ # --- Tab 5: Data View ---
205
+ with tab5:
206
  st.header("Explore the Raw and Processed Data")
 
207
  if not posts_df.empty:
208
  st.subheader("Processed Posts Data")
209
+ st.dataframe(posts_df.head(100))
210
+
211
+ comments_df = all_text_df[all_text_df['file_type'] == 'comment'] if 'file_type' in all_text_df.columns else pd.DataFrame()
212
+ if not comments_df.empty:
213
  st.subheader("Processed Comments & Reviews Data")
214
+ st.dataframe(comments_df.head(100))
 
create_test_data.py CHANGED
@@ -1,6 +1,13 @@
 
1
  import pandas as pd
 
2
 
3
- # Create sample CSV data
 
 
 
 
 
4
  sample_data = pd.DataFrame({
5
  'text': [
6
  'Prime Bank has the best customer service! Love their mobile app.',
@@ -12,24 +19,38 @@ sample_data = pd.DataFrame({
12
  'Prime Bank online banking is confusing.',
13
  'Excellent service at Prime Bank downtown branch!',
14
  'Prime Bank charged me hidden fees. Very disappointed.',
15
- 'Can someone explain Prime Bank credit card benefits?'
 
 
 
 
16
  ],
17
- 'date': pd.date_range('2024-01-01', periods=10),
18
- 'likes': [45, 12, 5, 89, 34, 8, 15, 67, 102, 22],
19
- 'shares': [5, 2, 1, 15, 8, 1, 3, 12, 25, 4]
 
 
 
 
 
 
20
  })
21
 
22
- # Save as CSV
23
- sample_data.to_csv('test_social_media_data.csv', index=False)
24
- print("✅ Created test_social_media_data.csv")
 
25
 
26
- # Create sample TXT file with reviews
27
  reviews = """Prime Bank provides exceptional service. Highly recommend!
28
  Terrible experience with Prime Bank customer support.
29
  Prime Bank mobile app keeps crashing. Please fix this!
30
  Love the new features in Prime Bank online banking.
31
- Why does Prime Bank charge so many fees?"""
 
32
 
33
- with open('test_reviews.txt', 'w') as f:
 
 
34
  f.write(reviews)
35
- print("✅ Created test_reviews.txt")
 
1
+ # create_test.py
2
  import pandas as pd
3
+ import os
4
 
5
+ # --- Create a directory for uploads if it doesn't exist ---
6
+ UPLOAD_DIR = 'data/uploads'
7
+ if not os.path.exists(UPLOAD_DIR):
8
+ os.makedirs(UPLOAD_DIR)
9
+
10
+ # --- Create sample POSTS CSV data ---
11
  sample_data = pd.DataFrame({
12
  'text': [
13
  'Prime Bank has the best customer service! Love their mobile app.',
 
19
  'Prime Bank online banking is confusing.',
20
  'Excellent service at Prime Bank downtown branch!',
21
  'Prime Bank charged me hidden fees. Very disappointed.',
22
+ 'Can someone explain Prime Bank credit card benefits?',
23
+ 'Heard good things about Eastern Bank, but Prime Bank is still my go-to.',
24
+ 'Comparing BRAC Bank and Prime Bank for a new account.',
25
+ 'City Bank has a nice app, but their service is slow.',
26
+ 'DBBL needs to improve their network coverage.',
27
  ],
28
+ 'date': pd.to_datetime(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04', '2024-01-05',
29
+ '2024-01-06', '2024-01-07', '2024-01-08', '2024-01-09', '2024-01-10',
30
+ '2024-01-11', '2024-01-12', '2024-01-13', '2024-01-14']),
31
+ 'likes': [45, 12, 5, 89, 34, 8, 15, 67, 102, 22, 18, 33, 50, 41],
32
+ 'shares': [5, 2, 1, 15, 8, 1, 3, 12, 25, 4, 2, 6, 9, 7],
33
+ 'comments': [10, 3, 2, 22, 9, 3, 5, 14, 30, 5, 4, 8, 11, 10],
34
+ 'location': ['Dhaka', 'Chittagong', 'Dhaka', 'Sylhet', 'Dhaka', 'Rajshahi',
35
+ 'Dhaka', 'Chittagong', 'Sylhet', 'Dhaka', 'Dhaka', 'Chittagong',
36
+ 'Dhaka', 'Sylhet'] # <-- NEW LOCATION COLUMN
37
  })
38
 
39
+ # Save as a file with "post" in the name
40
+ posts_filepath = os.path.join(UPLOAD_DIR, 'test_social_media_posts.csv')
41
+ sample_data.to_csv(posts_filepath, index=False)
42
+ print(f"✅ Created {posts_filepath}")
43
 
44
+ # --- Create sample COMMENTS TXT file ---
45
  reviews = """Prime Bank provides exceptional service. Highly recommend!
46
  Terrible experience with Prime Bank customer support.
47
  Prime Bank mobile app keeps crashing. Please fix this!
48
  Love the new features in Prime Bank online banking.
49
+ Why does Prime Bank charge so many fees?
50
+ BRAC Bank is also a good option for students."""
51
 
52
+ # Save as a file with "comment" in the name
53
+ comments_filepath = os.path.join(UPLOAD_DIR, 'test_review_comments.txt')
54
+ with open(comments_filepath, 'w') as f:
55
  f.write(reviews)
56
+ print(f"✅ Created {comments_filepath}")
data/uploads/Prime_bank_Review_posts_manual.txt DELETED
@@ -1,1056 +0,0 @@
1
- Post 1:
2
-
3
- Prime Bank Youth Account: A Detailed Review of My Experience
4
- 📅 Account Opening Journey:
5
- I opened my Prime Bank Youth Account at the Mohakhali Branch on 29th December 2024. The process was smooth, requiring an initial deposit of 1,000 BDT to activate the account. Within 4 days, I received my cheque book, and by 7 January, my debit card was in hand.
6
- 🎨 Debit Card Design:
7
- The debit card is fantastic—sleek, modern, and a perfect 10/10. The added NFC support is a standout feature for contactless payments.
8
- 📌 Who Can Apply?
9
- This account is perfect for Bangladeshi students aged 18 to 25, offering great savings options with modern banking benefits.
10
- Key Features of the Prime Bank Youth Account:
11
- 1. Interest Benefits:
12
- 4% attractive interest on savings.
13
- Daily interest calculation with half-yearly payouts, helping your funds grow steadily.
14
- 2. Free Banking Facilities:
15
- No account maintenance fee, maximizing your savings.
16
- Free Debit Card and the first Cheque Book provided at no cost.
17
- Complimentary access to MyPrime Internet Banking and SMS alerts.
18
- 3. Initial Deposit Requirement:
19
- Open the account with a minimum deposit of just 1,000 BDT, making it affordable for students.
20
- Required Documents for Opening the Account at Mohakhali Branch:
21
- 1. Identity Proof:
22
- NID, Passport, or Birth Certificate for both the applicant and nominee.
23
- 2. Address Proof:
24
- A recent utility bill (electricity, water, telephone, etc.).
25
- 3. Income/Profession Proof:
26
- Valid Student ID or certification from your educational institution.
27
- Supporting documents for the parent’s or guardian’s source of funds (if applicable).
28
- 4. Other Documents:
29
- 2 passport-size photos of the applicant (self-attested).
30
- 1 passport-size photo of the nominee, attested by the account holder.
31
- Proof of Tax Return Submission (PSR) & E-TIN Certificate .
32
- #PrimeBank #YouthAccount #MohakhaliBranch #StudentBanking #SavingsAccount #ModernBanking #Bangladesh
33
- Facebook
34
- Facebook
35
- Facebook
36
- Facebook
37
- Facebook
38
- Facebook
39
- Facebook
40
- Facebook
41
- Facebook
42
- Facebook
43
- Facebook
44
- Hridoy Hasan
45
-
46
- Top contributor
47
- মিনিমাম ব্যালেন্স শূন্য করা যায়?
48
- 22w
49
- Reply
50
- See translation
51
- Share
52
- Hasin Abrar Shams
53
-
54
- All-star contributor
55
- Dual currency card?
56
- 22w
57
- Reply
58
- Share
59
- Fabiha Nawrin
60
-
61
- All-star contributor
62
- Ulility bill ki must lagbei?
63
- 22w
64
- Reply
65
- Share
66
- Robiul Islam
67
- Fabiha NawrinNo
68
- 22w
69
- Reply
70
- Share
71
-
72
-
73
- MD Rakib Khan
74
- ·
75
- NFC মানে কি?
76
- 22w
77
- Reply
78
- See translation
79
- Share
80
- Hridoy Hossen
81
- Bhai eta ki dual currency masterd card?
82
- 22w
83
- Reply
84
- Share
85
- Eshtiak Ahmed
86
-
87
- Rising contributor
88
- Foysal Hossain Bro, I reached out to Prime Bank through the Call center. The representative told me I had to attach my passport copy to apply for a dual currency card. I'm not talking about dollar endorsement. She told me I had to have a passport before applying. Is that mandatory?
89
- 21w
90
- Reply
91
- Share
92
- Edited
93
- Aiden N
94
- initial deposit er tk ki block kora thake ?
95
- 22w
96
- Reply
97
- See translation
98
- Share
99
- Sadik Hasan Mubin
100
- vai ac kholar pore app on korsi, ekhn card er jonno to kono msg pai nai, apni kono msg paisilen je card bananor process choltese emn kisu?
101
- 22w
102
- Reply
103
- See translation
104
- Share
105
- Arman Hossain
106
- Does this support dual currency?
107
- 22w
108
- Reply
109
- Share
110
- Sabbir Hossen
111
- Nspb cost?
112
- 22w
113
- Reply
114
- Share
115
- Ashikur Rahman
116
-
117
- Top contributor
118
- ·
119
- SA MI লিবি? সব ফ্রি... ২৫বছর বয়স পর্যন্ত...
120
- 22w
121
- Reply
122
- See translation
123
- Share
124
- Sheikh Ahmed Ali
125
- Prime Bank Jatrabari Branch এ কেউ আছেন?
126
- 22w
127
- Reply
128
- See translation
129
- Share
130
- Proteek Hossain
131
-
132
- Top contributor
133
- Is this dual currency?
134
- 22w
135
- Reply
136
- Share
137
- প্রচুর পড়তে হবে
138
- ভাই এটা দিয়ে কি রেমিট্যান্স রিসিভ করা যাবে??
139
- 20w
140
- Reply
141
- See translation
142
- Share
143
- Md. Yeahea Sayeed
144
-
145
- Rising contributor
146
- The card design is😍
147
- 22w
148
- Reply
149
- Share
150
- Rakibul Islam
151
- Student id card expired hoye gese, akhn kivabe khulbo?
152
- 20w
153
- Reply
154
- See translation
155
- Share
156
- Shepon Sarker
157
- ·
158
- 👍
159
- 22w
160
- Reply
161
- Share
162
- Sohag Hossain
163
-
164
- All-star contributor
165
- kuno initial deposit nai hoyto.amake branch theke bolcilo je kuno amount deposit korte.
166
- 22w
167
- Reply
168
- See translation
169
- Share
170
- Kohinoor Haque
171
- Risan last er ta ki bollo? E-TIN & tax submission?
172
- 21w
173
- Reply
174
- See translation
175
- Share
176
- Naiem Newaz
177
-
178
- Rising contributor
179
- Atm charge ?
180
- 22w
181
- Reply
182
- Share
183
- Md Mehrab
184
- Card পেতে কতদিন লাগছে??
185
- 22w
186
- Reply
187
- See translation
188
- Share
189
- Yousuf Abdullah Harun
190
- Is this a duel currency mastercard ?
191
- 22w
192
- Reply
193
- Share
194
- Sadaf Ahmed
195
- অনলাইনে এপ্লাই করা যায় ?
196
- 22w
197
- Reply
198
- See translation
199
- Share
200
- Iftekhar Uddin Mullick
201
-
202
- Top contributor
203
- Tax return? Is this City Bank v2?
204
- No photo description available.
205
- 22w
206
- Reply
207
- Share
208
- Samiul Anan
209
- Initial deposit 500 BDT not 1000 BDT
210
- 21w
211
- Reply
212
- Share
213
- Sabbir Chowdhury
214
- Income sources ki mandatory Ditey hobe 😳
215
- 22w
216
- Reply
217
- Share
218
- Risan
219
-
220
- All-star contributor
221
- All is correct but 1000 taka deposite kora baddhota mulok noi..apni 1 takao deposit kore account khulte prben..abr deposit na korle account actve hbe..ami nije koreci
222
- 22w
223
- Reply
224
- See translation
225
- Share
226
- Edited
227
- Parag Mollick
228
-
229
- All-star contributor
230
- vai address verify a kono letter ascilo?
231
- 22w
232
- Reply
233
- See translation
234
- Share
235
- Edited
236
- Kazi Mohammed Shakil
237
-
238
- Top contributor
239
- ·
240
- Best bank in Bangladesh ✌️
241
- 22w
242
- Reply
243
- Share
244
- Rayat Fahmid
245
-
246
- Rising contributor
247
- ১০০০ টাকা প্রাথমিক জমা, ওইটা কি ব্লক মানি হিসেবে জমা থাকে নাকি পরে বের করা যায়।
248
- 22w
249
- Reply
250
- See translation
251
- Share
252
- তাওহীদ ইসলাম শাওন
253
-
254
- Top contributor
255
- Card free?
256
- 17w
257
- Reply
258
- Share
259
- Shakhawat Hossain
260
- ১ বছর পর থেকে নাকি চার্জ কাটে?
261
- 22w
262
- Reply
263
- See translation
264
- Share
265
- Foysal Hossain
266
- Author
267
-
268
- All-star contributor
269
- Shakhawat Hossain আমি যতটা জানি ১৮ বছর থেকে ২৫ বছর বয়স পর্যন্ত এটা ফ্রি ।
270
- 22w
271
- Reply
272
- See translation
273
- Share
274
-
275
-
276
- Rakibul Islam
277
- Inbox check
278
- 20w
279
- Reply
280
- Share
281
- Ahmed Tarek Dipto
282
- Savings account er interest calculation ta keu ektu bujhiye bolben???
283
- 22w
284
- Reply
285
- See translation
286
- Share
287
- Jahidul Islam
288
-
289
- Top contributor
290
- Foysal Hossain vai amr jonmo nivondhon dea ki korte parvo youth account
291
- 22w
292
- Reply
293
- See translation
294
- Share
295
- Asif Mahmud Jashim
296
-
297
- Top contributor
298
- ভাই এটা কি ইন্টারন্যাশনাল
299
- ডেবিট কার্ড সাপোর্ট করে?
300
- বর্তমান সময়ের সেরা ব্যাংক বাংলাদেশের।
301
- 22w
302
- Reply
303
- See translation
304
- Share
305
- Edited
306
- তাওহীদ ইসলাম শাওন
307
-
308
- Top contributor
309
- prime bank Apply for Virtual Cards free?
310
- 17w
311
- Reply
312
- Share
313
- Nasrullah Abid Foraze
314
- Tax return er kagoj ki mandatory?
315
- 22w
316
- Reply
317
- See translation
318
- Share
319
- Wahid Mahmud
320
- ভাই অ্যাপ এ একাউন্টে হিসেবে কোন একাউন্ট লিখা আসে?
321
- 19w
322
- Reply
323
- See translation
324
- Share
325
- Foysal Hossain
326
- Author
327
-
328
- All-star contributor
329
- Wahid Mahmud Youth Account
330
- 18w
331
- Reply
332
- Share
333
- Edited
334
- Foysal Hossain
335
- Author
336
-
337
- All-star contributor
338
- No photo description available.
339
- 18w
340
- Reply
341
- Share
342
-
343
- Post 2:
344
-
345
- Need a review of prime Bank ! How is their customer support service ? And is their app convenient for internet banking? Need overall review please.
346
- Facebook
347
- Facebook
348
- Facebook
349
- Facebook
350
- Facebook
351
- Facebook
352
- Facebook
353
- Facebook
354
- Facebook
355
- Facebook
356
- Facebook
357
- Maruf Ahmed
358
- Satisfied 👍🏻
359
- 13w
360
- Reply
361
- Share
362
- Amzad
363
-
364
- All-star contributor
365
- Very good
366
- 13w
367
- Reply
368
- Share
369
-
370
- Post 3:
371
- Prime Bank এর credit card এর review জানতে চাই।
372
- See translation
373
- Facebook
374
- Facebook
375
- Facebook
376
- Facebook
377
- Facebook
378
- Facebook
379
- Facebook
380
- Facebook
381
- Facebook
382
- Facebook
383
- Facebook
384
- Mn Afsar
385
- Good service.
386
- 2y
387
- Reply
388
- Share
389
- Edited
390
- Syed Faizul Ahsan Shameem
391
- ·
392
- Good
393
- 2y
394
- Reply
395
- Share
396
- Afroza Rupa
397
- Valo
398
- 2y
399
- Reply
400
- See translation
401
- Share
402
- Tashniha Jiniya
403
- Dbbl nite paren
404
- 2y
405
- Reply
406
- See translation
407
- Share
408
- Abu Rayhan
409
- EBL is the best
410
- 2y
411
- Reply
412
- Share
413
- Mohammad Moshiur Rahman Badhon
414
- Good
415
- 2y
416
- Reply
417
- Share
418
- M.A. Kaium
419
-
420
- Top contributor
421
- ·
422
- সাধারণ ব্যবহারকারী হিসেবে আমার কাছে ভালোই লেগেছে।
423
- শুধুমাত্র ভ্যাটের টাকা দিয়ে সারা বছর কার্ড ইউজ করতে পারছি।
424
- 2y
425
- Reply
426
- See translation
427
- Share
428
- MD Rubel Sheikh
429
- ab try korte paren
430
- 2y
431
- Reply
432
- See translation
433
- Share
434
- MD Rubel Sheikh
435
- vlo na
436
- 2y
437
- Reply
438
- See translation
439
- Share
440
- Sajjad Hossain
441
- Don't have NFC feature.
442
- 2y
443
- Reply
444
- Share
445
- Fahima Akter
446
- Valo na..one bank er ta dekhte paren..tader service akhn valo
447
- 2y
448
- Reply
449
- See translation
450
- Share
451
- Al Ib Rahat
452
- Bad things:They don't waive the VAT amount of annual fee despite fulfilling the requirements. In statement, you won't see any reward point information.
453
- Good things:Don't charge on add money. Usually have cashback/discount offers on daraz, foodpanda, supershops (during Eid)
454
- 2y
455
- Reply
456
- Share
457
- Kaif Hossain
458
- Amex UCB Dutch bangla
459
- 2y
460
- Reply
461
- Share
462
- Neel Hossain
463
-
464
- Top contributor
465
- ·
466
- MTB দেখেন ওদের রিওয়ার্ড পয়েন্ট ভালো অন্যান্য দের চেয়ে।
467
- 2y
468
- Reply
469
- See translation
470
- Share
471
- Asif Mahmud Jashim
472
-
473
- Top contributor
474
- আপনার ইচ্ছা হলে নেন Prime bank ভাল মানের ব্যাংক এই গ্রুপে সবাই বলবে EBL MTB
475
-
476
- Post 4:
477
-
478
- Khairul Islam Bablu ·
479
- nerdtSopso
480
- 4
481
- 921
482
-
483
- 5uc4
484
- 1
485
- 74
486
- 8
487
- 90
488
- J
489
- 0itm64fl
490
- a
491
- 70
492
-
493
- t81
494
- t
495
- n
496
- :
497
- 5
498
-
499
- 3mc2hl68
500
- e
501
- 0h
502
- u
503
- 0
504
- t
505
- ·
506
- আচ্ছা বর্তমানে prime bank এ কি Savings account এ এমন same color এর Visa/Mastercard দেয় তারা White Color এর? অথবা অন্য কোনো Bank এ এমন White color Mastercard Debit দেয় কেউ?
507
- ©️ Pic টা আরেকজন এর।
508
- See translation
509
- Facebook
510
- Facebook
511
- Facebook
512
- Facebook
513
- Facebook
514
- Facebook
515
- Facebook
516
- Facebook
517
- Facebook
518
- Facebook
519
- Facebook
520
- Dr. Md. Faisal Ahmed
521
-
522
- Rising contributor
523
- EBL sharetrip mastercard
524
- 1w
525
- Reply
526
- Share
527
- Zia Uddin Jewel
528
- Same card e dey
529
- 1w
530
- Reply
531
- Share
532
- Muttaqinur Ashim
533
-
534
- Top contributor
535
- Aita youth account er sathe dey. Normal savings account e alada hobe hoytoh.
536
-
537
- Post 5:
538
- 1) Eastern Bank
539
- 2) Mutual Trust Bank
540
- 3) The Premier Bank
541
- 4) Prime Bank
542
- এই ৪ টা ব্যাংকের মধ্যে কোনটা ভালো হবে? এই ৪টার মধ্যে কোন ব্যাংক সেইফ আছে?
543
- See translation
544
- Facebook
545
- Facebook
546
- Facebook
547
- Facebook
548
- Facebook
549
- Facebook
550
- Facebook
551
- Facebook
552
- Facebook
553
- Facebook
554
- Facebook
555
- Md. Jewel Rana
556
- যদি সবচেয়ে বেশি নিরাপত্তা খোঁজেন তাহলে সোনালী ব্যাংক৷ আর আপনার দেওয়া চারটি ব্যাংকই ভালো
557
- 3h
558
- Reply
559
- See translation
560
- Share
561
- Akash Das Jeet
562
- Prime green Zone bank
563
- 22h
564
- Reply
565
- Share
566
- Zamil D M
567
- Avoid premier
568
- 21h
569
- Reply
570
- Share
571
- WahiduZzaman Shifat
572
- Sob gula e safe
573
- Jta kache apnr location er and branch beshi oi bank a account koren..
574
- 23h
575
- Reply
576
- See translation
577
- Share
578
- Mashudur Rahman Rakib
579
- Prime
580
- 17h
581
- Reply
582
- Share
583
- Obydul Kader Masud
584
- Prime Bank
585
- 20h
586
- Reply
587
- Share
588
- Zahangir Alam
589
-
590
- Rising contributor
591
- prime bank
592
- 22h
593
- Reply
594
- Share
595
- Md Noyon Islam
596
- সব ব্যাংক ই সেফ...
597
- 16h
598
- Reply
599
- See translation
600
- Share
601
- MD Rony
602
-
603
- Rising contributor
604
- Ebl
605
- 13h
606
- Reply
607
- Share
608
- Shuaib Ahmad
609
- ·
610
- আমি অনেকদিন যাবত প্রাইমের গ্রাহক,আমার কাছে ব্যাক্তিগত ভাবে Prime Bank খুবই লাগছে,তাদের স্টাফদের ব্যাবহার, সার্ভিস, my prime apps, কার্ড সব কিছু মিলিয়ে।
611
- 16h
612
- Reply
613
- See translation
614
- Share
615
- Kamrul MH
616
- Only ibbl , ucb and city safe
617
- 9h
618
- Reply
619
- Share
620
- M.A. Hashem Minto
621
- সব গুলো ভালো তবে সাভিস দেখে হিসাব খুলুন
622
- 15h
623
- Reply
624
- See translation
625
- Share
626
- Md Abrar Hossain
627
-
628
- Top contributor
629
- EBL
630
- 18h
631
- Reply
632
- Share
633
- Tanim Ahmed Zakaria
634
- Eastern 💥💥💥💥
635
- 19h
636
- Reply
637
- Share
638
- Kamrul MH
639
- 4 ta bad
640
- 9h
641
- Reply
642
- Share
643
- Chowdhury Rafiu Ahmed
644
-
645
- Top contributor
646
- All are safe
647
-
648
-
649
- Post 6:
650
-
651
- Prime Bank
652
- এতো ADC CHARGE কেটে নেওয়ার কারণ কী?
653
- See translation
654
- Facebook
655
- Facebook
656
- Facebook
657
- Facebook
658
- Facebook
659
- Facebook
660
- Facebook
661
- Facebook
662
- Facebook
663
- Facebook
664
- Facebook
665
- SA HA F
666
-
667
- Rising contributor
668
- Mastercard er charge katce, 575
669
- 21h
670
- Reply
671
- Share
672
- Ashfiqur Rahman Asif
673
- Manrainance charge ketese & vat
674
- 1d
675
- Reply
676
- Share
677
- ডীপ স্টোরি
678
-
679
- Top contributor
680
- কথা বলুন সমাধান পাবেন
681
- 1d
682
- Reply
683
- See translation
684
- Share
685
- MD Tushar Aman
686
- live chat e ask koren
687
-
688
-
689
- Post 7:
690
-
691
- Facebook
692
- Facebook
693
- Facebook
694
- Facebook
695
- Facebook
696
- Facebook
697
- Facebook
698
- Facebook
699
- Facebook
700
- Facebook
701
- Facebook
702
- মোঃ হাবিবুর রহমান জিহাদ
703
- onsSodetrph8
704
- y
705
- 6a8gi7tt5
706
- 4
707
- f84
708
- 1
709
- 93
710
- M
711
- ta1aciaagitm
712
- a
713
- mg3fual9t02h90ff
714
-
715
- ·
716
- প্রাইম ব্যাংকের গাফিলতি ও গ্রাহক ভোগান্তি, প্রগতি স্বরণী শাখা
717
- আসসালামু আলাইকুম
718
- একাউন্ট খোলার ২০-২৫ দিন পরে চেক ও তারও ১সপ্তাহ পরে কার্ড পাই। সব ঠিকঠাক চলছিল কিন্তু কোনো লেনদেন করতে পারছিলাম না, কারণ হচ্ছে ওয়েলকাম লেটার পাইনি। ঠিক আছে, গেলাম শাখায় বললাম কোনো লেনদেন করতে পারছি না এবং কোনো লেটার পাইনি।তাদের সার্ভারে চ��ক করে বললো লেটার নাকি ৮/০৪/২৫ এ আমার ঠিকানায় পাঠিয়েছে। তখন ব্যাংক থেকে বললো বাসায় খোঁজ নিয়ে দেখেন। বাসায় খুজলাম কোনো লেটার আমার নামে আসে নাই। আবার আজ ব্যাংকে গেলাম,… See more
719
- See translation
720
- Facebook
721
- Facebook
722
- Facebook
723
- Facebook
724
- Facebook
725
- Facebook
726
- Facebook
727
- Facebook
728
- Facebook
729
- Facebook
730
- Facebook
731
- Muhammad Alinur Islam
732
-
733
- Top contributor
734
- Prime bank er service asholei Ami onek Bhalo peyechi. And best for students who maintain youth account.
735
- 5w
736
- Reply
737
- See translation
738
- Share
739
- Mahin Chowdhury
740
-
741
- Rising contributor
742
- চেক বুক এবং কার্ড পেতে এক মাস লেগে যায়। যা খুবই দু:খজনক।
743
- 4w
744
- Reply
745
- See translation
746
- Share
747
- নোরাইজ নাইফ
748
- Kiser letter, amr kase to kono latter ase nai
749
- 4w
750
- Reply
751
- See translation
752
- Share
753
- Mohammad Ashraful Alam
754
- ২০০৬ থেকে উনারদের গ্রাহক! ব্যবহার খুবই ভাল! অন্য ব্যাংক এর তুলনায় সার্ভিস অনেক ভাল! অফিসার গুলো ডিসেন্ট!
755
- 5w
756
- Reply
757
- See translation
758
- Share
759
- Shahriar Hossain Emon
760
-
761
- Rising contributor
762
- ·
763
- এইটা আসলে কুরিয়ার সার্ভিসের দোষ ভাই, আমি প্রাইমের কেউ নয় তবে সার্ভিস অনেক ভালো পেয়েছি, ব্যবহারও ভালো।
764
- 5w
765
- Reply
766
- See translation
767
- Share
768
- Akash Das Jeet
769
- Prime youth best service paisi
770
- 4w
771
- Reply
772
- Share
773
- Shariful Fahim
774
-
775
- Rising contributor
776
- Ata couriar er fault vai
777
- 5w
778
- Reply
779
- See translation
780
- Share
781
- Muttaqinur Ashim
782
-
783
- Top contributor
784
- Aita courier er fault. Bank er dosh nei. Tao toh apnake help korlo. Courier er rider er number diye dilo.
785
-
786
- Post 8:
787
-
788
- Prime youth:
789
- প্রাইমের সাথে আছি ২০২৩ সাল থেকে। তখন শুধুমাত্র ১৮ বছরের নিচে স্টুডেন্ট একাউন্ট ছিলো, একাউন্ট ক্যাটাগরি- মাই ফার্স্ট একাউন্ট। ১৮+ youth account টা ২০২৪ এর মাঝামাঝি সময়ে বের হয়েছে। কয়েকদিন আগে ১৮ হওয়ার পর ব্রাঞ্চে গিয়ে এই ব্যাপারে কথা বলি। ব্রাঞ্চের আপু কনভারশনের ব্যাপারে দ্বিধায় ছিলেন হবে কি হবে না। তারপর আমাকে সাজেস্ট করলেন হাসানাহ একাউন্ট টা করতে। কিন্তু আমি কনভেনশনাল একাউন্ট-ই চাচ্ছিলাম। তো বাসায় এসে প্রাইমে মেইল করলে তারা আমাকে জানায় এই একাউন্ট কেই ইউথ-এ কনভারশন করা যাবে এবং ব্রাঞ্চ থেকেও অপারেশন ম্যানেজার কল করে জানায়। তারপর সব ডকুমেন্ট দিয়ে আসার ২ দিন পর ইউথ একাউন্টে কনভার্ট হয় এবং আগের ডেবিট কার্ড জমা দিয়ে নতুন এই ডেবিট কার্ড নিই ফ্রী তেই। চেক বই আগের ছিলো, চাইলে নেওয়া যেতো, আমি বলেছি না দিতে।
790
- See translation
791
- Facebook
792
- Facebook
793
- Facebook
794
- Facebook
795
- Facebook
796
- Facebook
797
- Facebook
798
- Facebook
799
- Facebook
800
- Facebook
801
- Facebook
802
- ডীপ স্টোরি
803
-
804
- Top contributor
805
- এটা ১ম জানলাম পরিচিতি দের কনো লিমিট নেই 🐱
806
- 4w
807
- Reply
808
- See translation
809
- Share
810
- জুনায়েদ হায়দার
811
- Elakar manager ke gharaite hobe dekhi, amake ei limit wala scheme bollo na
812
- 4w
813
- Reply
814
- See translation
815
- Share
816
- Hasan Mohammad
817
- তো এখন এই কার্ড দিয়ে কী করবেন এখন শুনি? হটাৎ সবাই পাগল হয়ে গেছে।
818
- 4w
819
- Reply
820
- See translation
821
- Share
822
- JoyJit Das
823
- Brac Bank এর টা আর এটার মধ্যে কি কি পারথক্য? কোন টা ভালো হবে?
824
- 4w
825
- Reply
826
- See translation
827
- Share
828
- Sweetie Pie
829
- card diye uber ba foodpanday payment kora jay?
830
- 3w
831
- Reply
832
- See translation
833
- Share
834
- RU H AN
835
- Limit 😂🤣
836
- 4w
837
- Reply
838
- Share
839
- Shariful Fahim
840
-
841
- Rising contributor
842
- Amr age under 18 a card amake dive ?
843
- 4w
844
- Reply
845
- See translation
846
- Share
847
- Post 9:
848
- আমি অনলাইনের মাধ্যমে প্রাইম ব্যাংকের (Prime Bank)একাউন্ট খুলেছি।
849
- আমি যদি ১ লাখ টাকার বেশি লেনদেন করি তাহলে কি একাউন্ট ফ্রিজ করে দিবে?
850
- এই ব্যাপারে কারো কোন অভিজ্ঞতা আছে?
851
- আমি দেশের বাহিরে আছি বর্তমানে।
852
- See translation
853
- Facebook
854
- Facebook
855
- Facebook
856
- Facebook
857
- Facebook
858
- Facebook
859
- Facebook
860
- Facebook
861
- Facebook
862
- Facebook
863
- Facebook
864
- Russell Shafik
865
-
866
- Rising contributor
867
- No photo description available.
868
- 27w
869
- Reply
870
- Share
871
- Saifur Rahaman Saif
872
-
873
- All-star contributor
874
- Online e account korar por branch e gyea document submit kora lagbe
875
- 27w
876
- Reply
877
- See translation
878
- Share
879
- Monirul Islam
880
- Kon accnt khulesen?
881
- 27w
882
- Reply
883
- Share
884
- Moynul Ahmed
885
- প্রাইম ব্যাংকের কার্ড ছাড়া অ্যাপ ব্যাবহার করা যায় কী ?
886
- 27w
887
- Reply
888
- See translation
889
- Share
890
-
891
- Post 10:
892
- Bank Asia vs Prime Bank কোনটার সিকিউরিটি, সার্ভিস এবং এপ ভালো হবে?
893
- See translation
894
- Facebook
895
- Facebook
896
- Facebook
897
- Facebook
898
- Facebook
899
- Facebook
900
- Facebook
901
- Facebook
902
- Facebook
903
- Facebook
904
- Facebook
905
- Rabiul Islam
906
- ·
907
- ১৷ সেলফিন এর সাহায্যে একাউন্ট/ওয়ালেট থেকে IBBL ATM/CRM এর মাধ্যমে কার্ড ছাড়াই টাকা উত্তোলন করা যায় ৷
908
- ২৷ সেলফিন এর সাহায্যে এবং ATM কার্ড দিয়ে ব্যাংকের যে কোনো শাখা/এজেন্ট আউটলেট থেকে টাকা উত্তোলন করা যায় ৷
909
- ৩৷ গ্রামীনফোন সীমে এমবি ছাড়াই সেলফিন/iSmart চালানো যায় ৷
910
- ৪৷ CRM মেশিনে কার্ড ছাড়াই একাউন্টে/সেলফিন ওয়ালেটে টাকা জমা করা যায় (ওটিপি আবশ্যক) ৷
911
- ৫৷ সেলফিনের ভার্চুয়াল ভিসা কার্ডের মাধ্যমে ট্রেনের টিকেট কাটা যায় ৷
912
- ৬৷ সেলফিনের মাধ্যমে ৬ মাসের সকল লেনদেন (স্টেটমেন্ট) দেখা যায় এবং PDF ডাউনলোড করা যায় ৷
913
- ৭৷ iSmart এর মাধ্যমে ১০ (দশ) বছরের এবং ওয়েবসাইটের মাধ্যমে এক বছরের সকল লেনদেন (স্টেটমেন্ট) দেখা যায় এবং PDF ডাউনলোড করা যায় ৷
914
- ৮৷ সেলফিন, iSmart এবং ওয়েবসাইটের মাধ্যমে যে কোনো ব্যাংকে টাকা পাঠানো যায় ৷
915
- ৯৷ ইসলামী ব্যাংকের ATM/CRM এর সংখ্যা অনেক বেশি ৷
916
- ১০৷ সেলফিনের মাধ্যমে ওয়ালেট/একাউন্ট থেকে সরাসরি যেকোনো বিকাশ/নগদ নাম্বারে টাকা পাঠানো যায় (ফ্রি) ৷
917
- ১১৷ সেলফিন থেকে যেকোনো ব্যক্তির মোবাইল নাম্বারে টাকা পাঠানো যায়, ক্যাশ বাই কোড এর মাধ্যমে, যা ঐ ব্যক্তি ইসলামী ব্যাংকের যে কোনো এটিএম থেকে তুলতে পারবে ৷৷
918
- 1y
919
- Reply
920
- See translation
921
- Share
922
- Bokhtiar Arif
923
- Bank Asia কিন্তু অ্যাপ+ ফরেইন ট্রানজেকশন এর ক্ষেত্রে EBL & CITY BEST
924
- 1y
925
- Reply
926
- See translation
927
- Share
928
- Edited
929
- Sayed Ahmed
930
-
931
- Top contributor
932
- Prime is like old is gold.
933
- কিসের সাথে কিসের তুলনা করেন। তবে প্রাইমের অ্যাপ টপনচ না লাইক Brac, Ebl, City.
934
- 1y
935
- Reply
936
- See translation
937
- Share
938
- Edited
939
- Riad Hossain
940
-
941
- Top contributor
942
- ব্যাংক এশিয়ার অ্যাপ খুব একটসুবিধাজনক না।
943
- 1y
944
- Reply
945
- See translation
946
- Share
947
- Jannatul Ferdaous
948
- Prime bank
949
- 1y
950
- Reply
951
- Share
952
- Akther Hussan
953
- ·
954
- এপস ইউজ এর ক্ষেত্রে প্রাইমের তুলনা নেই
955
- 1y
956
- Reply
957
- See translation
958
- Share
959
- Md Rakibul Islam
960
- prime bank
961
- 1y
962
- Reply
963
- Share
964
- Chowdhury Ahmed
965
- Prime
966
- 1y
967
- Reply
968
- Share
969
- Md Asif Khan
970
- Prime bank
971
- 1y
972
- Reply
973
- Share
974
- Lutfor Rahoman
975
- Asia
976
- 1y
977
- Reply
978
- Share
979
- Ariyan Sarkar
980
- F
981
- 1y
982
- Reply
983
- Share
984
- Amiable Faysal Mahmud
985
- ·
986
- দুইটাই ভালো
987
- 1y
988
- Reply
989
- See translation
990
- Share
991
- Borsha Islam
992
- ·
993
- ব্যাংক এশিয়া
994
- 1y
995
- Reply
996
- See translation
997
- Share
998
- Nayeem Sadat
999
-
1000
- Rising contributor
1001
- .try brac
1002
- 1y
1003
- Reply
1004
- Share
1005
- Anik Saha
1006
-
1007
- Rising contributor
1008
- Midland Bank PLC. You can try MDB online Apps. For details pls inbo
1009
-
1010
- Post 11:
1011
- Prime Bank এর এপ্স মাই প্রাইম ডাউন নাকি? আজ সকাল থেকে মারাত্মক স্লো ছিলো। আগে ট্রানজেকশন ফেইল করছিলো। 1628 এ ডিসপুট ক্লেইম করতে ওয়েটিং টাইম লেগেছে ৪০ মিনিট!
1012
- এখন তো এপ্সে লগইন ই হচ্ছে না।
1013
- See translation
1014
- Facebook
1015
- Facebook
1016
- Facebook
1017
- Facebook
1018
- Facebook
1019
- Facebook
1020
- Facebook
1021
- Facebook
1022
- Facebook
1023
- Facebook
1024
- Facebook
1025
- Mohammod Nazibullah Khan Onjon
1026
- connection lost
1027
- 11w
1028
- Reply
1029
- Share
1030
- Mohammod Nazibullah Khan Onjon
1031
- same
1032
- 11w
1033
- Reply
1034
- Share
1035
- Juwel Khan
1036
- City bank same
1037
- 11w
1038
- Reply
1039
- Share
1040
- Safin Ahmed Rohan
1041
- ব্রাক ব্যাংক ও স্লো
1042
- 11w
1043
- Reply
1044
- See translation
1045
- Share
1046
- Sukanta Deb
1047
- Author
1048
- একাউন্ট ব্যালান্সই শো করতেছে না
1049
- 11w
1050
- Reply
1051
- See translation
1052
- Share
1053
- AsaduzZaman Mithu
1054
- ·
1055
- সোনালী ব্যাংক এফডিআর রেট কেউ বলতে পারবেন?
1056
- এবং সুযোগ সুবিধা কেমন??
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/uploads/other_banks_comments.csv DELETED
The diff for this file is too large to render. See raw diff
 
data/uploads/other_banks_posts.csv DELETED
The diff for this file is too large to render. See raw diff
 
data/uploads/prime_bank_comments.csv DELETED
The diff for this file is too large to render. See raw diff
 
data/uploads/prime_bank_posts.csv DELETED
@@ -1,146 +0,0 @@
1
- Post ID,Legacy ID,Post URL,Facebook URL,Input URL,Time Posted,User ID,User Name,Post Text,Group Title,Facebook ID,Likes Count,Shares Count,Comments Count,Reaction Like Count,Reaction Love Count,Reaction Wow Count,Reaction Care Count,Reaction Haha Count,Reaction Sad Count,Top Reactions Count,Feedback ID,Has Attachments,Attachment Count,Has Top Comments,Top Comments Count,Scraped At,Scraped Date,Scraped Time,Attachments Info,Top Comments,Post Facebook ID,Page ID,Page Name,Top Level URL,Timestamp,Link,Thumbnail,Source Type
2
- ,,,,,,,,,,,0,0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,,No,0.0,No,0.0,2025-06-18 11:45:33,2025-06-18,11:45:33,,,,,,,,,,
3
- 771091601910976,,https://www.facebook.com/primebankofficial/videos/8204026676388315/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-18T04:29:13.000Z,,,"Customer Engagement Program at Baridhara Branch, organized by Prime Bank Neera.
4
-
5
- #PrimeBank #Neera #ami_neera #CustomerEngagement #PowerToYou",,100070304281907,32,4,0,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/771091601910976,1750220953.0,,,Facebook Page
6
- 770598281960308,,https://www.facebook.com/primebankofficial/posts/pfbid02w1wksaJGjWS5WfakmWiApoUVwGD1i6utVrps6qabyUw9unYMZkgFzuc8qxvuHVQcl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-17T13:34:14.000Z,,,"Choose your preferred investment option with Prime Bank and enjoy 15% 𝐓𝐀𝐗 𝐑𝐄𝐁𝐀𝐓𝐄!
7
-
8
- For details, visit: https://tinyurl.com/537ptx9n
9
-
10
- #PrimeBank #taxrebates #wealthmanagement #investment",,100070304281907,39,4,0,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/770598281960308,1750167254.0,https://tinyurl.com/537ptx9n,,Facebook Page
11
- 770561111964025,,https://www.facebook.com/primebankofficial/posts/pfbid0vc8xtcfZn4YqmGJ2nEnwWfcM8V3YLHW5hz4XDZmoM5btjTzfzgjWXU9PAM3edNTql,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-17T12:32:34.000Z,,,"কৃষি ঋণ সহজ হলেই আমাদের কৃষি খাতে আসবে সমৃদ্ধি।
12
-
13
- তাই আবাদ ঋণ, খামার ঋণ এবং নবান্ন ঋণ নিয়ে কৃষকদের পাশে আছে প্রাইম ব্যাংক এজেন্ট ব্যাংকিং!
14
-
15
- #agriculture #agriloans #farming #agribusiness #loans #PrimeBank",,100070304281907,105,14,4,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/770561111964025,1750163554.0,https://www.primebank.com.bd/,,Facebook Page
16
- 770491848637618,,https://www.facebook.com/primebankofficial/posts/pfbid02EDacGAhepRwLccKT44z72WtprthGi53Sui5vYJaYJ34a7eGpnQmFoawSn8B1aghyl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-17T10:30:12.000Z,,,"Prime Bank has signed a strategic agreement with SARTO & SUIT EXPRESS to offer exclusive privileges to its Priority Banking customers and cardholders. The signing ceremony took place at the Bank’s corporate office in Gulshan.
17
-
18
- Under this partnership, Prime Bank’s Priority Banking customers and cardholders will enjoy attractive benefits and privileges on bespoke tailoring and premium ready-to-wear services offered by SARTO & SUIT EXPRESS.
19
-
20
- The agreement was formally signed by Md. Nazeem A. Choudhury, Deputy Managing Director of Prime Bank PLC. and Shehzad Aaqib, Founder and Creative Director of SARTO & SUIT EXPRESS. Also present at the ceremony were Joarder Tanvir Faisal, Executive Vice President & Head of Cards and Retail Asset at Prime Bank; Tysir Khan, Deputy Managing Director of JK Group of Industry along with other senior officials from both organizations.
21
-
22
- This collaboration reflects Prime Bank’s ongoing commitment to delivering premium lifestyle privileges and curated experiences for its valued Priority customers.
23
-
24
- #PriorityBanking #PrimeBank",,100070304281907,157,8,8,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/770491848637618,1750156212.0,https://www.primebank.com.bd/find-locations,,Facebook Page
25
- 770358678650935,,https://www.facebook.com/primebankofficial/posts/pfbid02gPATiSVsSf6hwvDYeuMCb7zPjXLSmhCxWV6X3N1k3qurhUMXfAdTi4UvegtJYb5Tl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-17T06:00:58.000Z,,,"🎉 প্রাইম ব্যাংকের নতুন শাখা এখন চাঁদপুরে! ৩০ বছরের আস্থা ও আধুনিক ব্যাংকিং সেবার ধারাবাহিকতায় এবার চাঁদপুরে আমাদের নতুন শাখার যাত্রা শুরু।
26
-
27
- ঠিকানা: প্রিমিয়ার টাওয়ার, হাজী মহসিন রোড (২য় তলা), আ��িমপাড়া, চাঁদপুর সদর, চাঁদপুর
28
-
29
- ✅ নতুন ঠিকানায় আরও আধুনিক ও সাশ্রয়ী ব্যাংকিং সুবিধা!
30
-
31
- #PrimeBank #NewBranch #CustomerFirst #SmartBanking #Chandpur #BranchExpansion",,100070304281907,345,58,50,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/770358678650935,1750140058.0,,,Facebook Page
32
- 769796352040501,,https://www.facebook.com/primebankofficial/posts/pfbid02kb92uCaPRMw47fjTJLiQjVgZTjeVSDjE3jQZjhT8szrwFUaUbe74GNULPopd2wqkl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-16T13:32:55.000Z,,,"মাইপ্রাইম অ্যাপে রেজিস্ট্রেশন করলেই পাচ্ছেন ১০০ টাকা ক্যাশব্যাক!
33
-
34
- তাই দেরি না করে এখনি ডাউনলোড করুন মাইপ্রাইম অ্যাপ আর রেজিস্ট্রেশন করে ফেলুন।
35
-
36
- মাইপ্রাইম অ্যাপ ডাউনলোড করতে ক্লিক করুন: tinyurl.com/Download-MyPrime
37
-
38
- #moretoyou #MyPrime #PrimeBank",,100070304281907,111,3,12,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/769796352040501,1750080775.0,http://tinyurl.com/Download-MyPrime,,Facebook Page
39
- 769144355439034,,https://www.facebook.com/primebankofficial/posts/pfbid02BcS6Tg9ZxP2Ha2DJwViq8bm6cr7dFcoT8oNaTxccLZYYVdaH6YLpM86DfYzerVeul,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-15T18:00:20.000Z,,,"আন্তর্জাতিক ফ্যামিলি রেমিট্যান্স দিবসে আমরা শ্রদ্ধা জানাই তাঁদের, যারা দেশের মাটির স্বপ্ন বুনে চলেছেন দূরভূমি থেকে। তাদের পাঠানো প্রতিটি রেমিট্যান্স হয়ে উঠুক পরিবারের নিরাপত্তার ভিত্তি - প্রাইম পরিজন সেভিংস একাউন্টের মাধ্যমে।
40
-
41
- #PrimeBankPLC #PrimePorijon #InsuranceBenefits #PorijonSavingsAccount #RemittanceForFamily #InternationalDayOfFamilyRemittances",,100070304281907,120,7,9,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/769144355439034,1750010420.0,http://onelink.to/7pbj6v,,Facebook Page
42
- 768681448818658,,https://www.facebook.com/primebankofficial/posts/pfbid0pz9RDenJbUi6fgZYeSR5WssdLD6jAPDLmwPviRgiyKuuiPp848xrgMqoUdXDQLDRl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-15T06:59:30.000Z,,,"⭐️ আগামীর ব্যাংকিং নিয়ে প্রাইম ব্যাংক এখন দক্ষিণ বনশ্রী, ঢাকায়!
43
-
44
- আপনার প্রয়োজনীয় সকল ব্যাংকিং সেবা পেতে আমাদের নতুন এজেন্ট আউটলেটে আসুন এবং বাড়ির কাছেই পেয়ে যান আধুনিক ব্যাংকিং সুবিধা।
45
-
46
- 🏘️ আয়ান এন্টারপ্রাইজ, বাড়ি- ৮৪, রোড- ১৪, ব্লক- এইচ, দক্ষিণ বনশ্রী, ঢাকা।
47
-
48
- #dhaka #dps #fdr #savings #remittance #AgentBanking #PrimeBank",,100070304281907,75,4,9,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/768681448818658,1749970770.0,,,Facebook Page
49
- 725429063143897,,https://www.facebook.com/primebankofficial/posts/1035501142023675:1035501142023675,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-15T04:44:47.000Z,,,,,100070304281907,540,13,37,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/725429063143897,1749962687.0,,,Facebook Page
50
- 768603615493108,,https://www.facebook.com/primebankofficial/posts/pfbid032ZgGcdkKi7mjwZG9kGPE24Ddfn7KwZ8HbHBmn9tP5JND9LitNbXxXKwmwwq1VS2rl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-15T04:29:22.000Z,,,"PrimePay – আপনার বিজনেসের ওয়ান স্টপ সল্যুশন!
51
-
52
- নিরাপদ, দ্রুত ও সহজ লেনদেন এখন হাতের মুঠোয়।
53
-
54
- RTGS, NPSB, MFS, Utility Bill Payment, Fund Transfer—সবকিছু এক প্ল্যাটফর্মে।
55
-
56
- ✅ সব ধরনের পেমেন্ট
57
- ✅ সব ব্যাংকে টাকা পাঠান
58
- ✅ আপনার ব্যবসার ���ময় আর খরচ বাঁচান
59
-
60
- বিস্তারিত জানতে প্লিজ ই-মেইল: primepay@primebank.com.bd
61
-
62
- এছাড়াও যেকোনো ধরনের ব্যাংকিং সেবা পেতে কল করুন ১৬২১৮-এ যেকোনো সময়, যেকোনো প্রয়োজনে।সাইন ল্যাঙ্গুয়েজ ভিডিও কল সার্ভিস নিতে কল করুন হোয়াটসঅ্যাপ দিয়ে: ০১৩ ২১১ ১৬২১৮ (সকাল ১০ টা - বিকাল ৪ টা)
63
-
64
- #BusinessTransactions #PrimePay #PrimeBank",,100070304281907,108,6,3,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/768603615493108,1749961762.0,http://onelink.to/7pbj6v,,Facebook Page
65
- 768296855523784,,https://www.facebook.com/primebankofficial/posts/pfbid0PQJq41CSqVwukaTscpnrZfcDZ2u2PygYEnPYDvqiEDio2P2VBzs9duUgjCQeFEk6l,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-14T18:00:10.000Z,,,"ছোট পায়ে প্রথম পদক্ষেপ থেকে শুরু করে বড় স্বপ্ন দেখানো পর্যন্ত, তার ভালোবাসা এবং সাহস আমাদের জীবনের সবচেয়ে বড় উৎস। প্রাইম ব্যাংক থেকে সকল বাবাকে শুভ বাবা দিবস।
66
-
67
- #PrimeBank #FathersDay #HonoringAllFathers",,100070304281907,177,23,10,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/768296855523784,1749924010.0,,,Facebook Page
68
- 768252318861571,,https://www.facebook.com/primebankofficial/posts/pfbid0ZTbicTEjFzo4ULJNNPkyeECyxLkZkUxk2H5t9JmiBpPda952kWgX7F9V1qqXzkxcl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-14T17:07:53.000Z,,,"Turn your savings into strength!
69
-
70
- Open a Prime Hasanah Women’s Savings Account and take charge of your future—with halal savings and the confidence to grow on your own terms.
71
-
72
- #PrimeBank #Neera #ami_neera #SavingsAccount #halalSavings #PowerToYou",,100070304281907,110,16,4,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/768252318861571,1749920873.0,,,Facebook Page
73
- 768141452205991,,https://www.facebook.com/primebankofficial/videos/1394366471603858/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-14T14:05:54.000Z,,,"Furnish your dream home with Prime Swapnashaj Loan.
74
-
75
- To know more please visit: tinyurl.com/Prime-Home-Loans
76
-
77
- #DreamHome #PrimeBank",,100070304281907,44,12,0,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/768141452205991,1749909954.0,http://tinyurl.com/Prime-Home-Loans,,Facebook Page
78
- 767472135606256,,https://www.facebook.com/primebankofficial/posts/pfbid02TM2nZQpZkvobRFF4piDKbHZgz6V2dcwCpfrkXMhnhuBijm6TCDpQtAA11FBNaRfl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-13T16:08:26.000Z,,,"Dive into delicious deals with Prime Bank Cards at Platinum Grand!
79
-
80
- #PrimeBank #DebitCard #creditcard #PlatinumGrand #eiduladha2025",,100070304281907,5336,20,691,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/767472135606256,1749830906.0,https://www.primebank.com.bd/,,Facebook Page
81
- 767140542306082,,https://www.facebook.com/primebankofficial/posts/pfbid02qp64oQDCiiAimVqVCS9CccUzvs7DYB4Lkmi4WJF4HL2cPChjD9vq8rbuGqCGFVP5l,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-13T06:06:19.000Z,,,"Celebrate DAD, the Prime Way!
82
-
83
- Details: https://www.primebank.com.bd/fathers-day-2025
84
-
85
- #PrimeBank #DebitCard #creditcard #FathersDay2025",,100070304281907,3685,7,485,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/767140542306082,1749794779.0,https://www.primebank.com.bd/fathers-day-2025,,Facebook Page
86
- 766675219019281,,https://www.facebook.com/primebankofficial/videos/1263215722045188/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-12T14:42:48.000Z,,,"মাইপ্রাইম অ্যাপ দিয়ে চার্জ ফ্রি মোবাইল টপ-আপ করুন যখন যেখানে প্রয়োজন!
87
-
88
- মাইপ্রাইম ডাউনলোড করতে ক্লিক করুন: tinyurl.com/Download-MyPrime
89
-
90
- #PrimeBank #MyPrime",,100070304281907,57,6,2,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/766675219019281,1749739368.0,http://tinyurl.com/Download-MyPrime,,Facebook Page
91
- 765949195758550,,https://www.facebook.com/primebankofficial/posts/pfbid02aqRwyP3pU6EqSwywPWy2X2Z17ZnUkJU99sorZfpd2Hps3uajiV3Bf9ufAF4b3mkcl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-11T14:58:55.000Z,,,"🎓✈️ Unpack Your Future with Prime Bank! Dreaming of studying abroad? 🌍
92
-
93
- Open your Student File today and step closer to undergraduate, postgraduate, advanced diploma, or PhD programs around the world.
94
-
95
- For more info please visit: tinyurl.com/Prime-Student-File
96
-
97
- For queries please email: prime_studentfile@primebank.com.bd or call our 24/7 helpline 16218. For Sign language support please call via WhatsApp 013 211 16218 (10 AM – 4 PM).
98
-
99
- #PrimeBank #PrimeStudentFile #StudyAbroad",,100070304281907,33,4,4,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/765949195758550,1749653935.0,http://tinyurl.com/Prime-Student-File,,Facebook Page
100
- 765095652510571,,https://www.facebook.com/primebankofficial/videos/1909408576474016/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-10T13:07:14.000Z,,,"মাইপ্রাইম অ্যাপ থেকে কার্ড সার্ভিসেস নিন যখন যেখানে প্রয়োজন!
101
-
102
- মাইপ্রাইম ডাউনলোড করতে ক্লিক করুন: tinyurl.com/Download-MyPrime
103
-
104
- #PrimeBank #MyPrime",,100070304281907,151,14,10,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/765095652510571,1749560834.0,http://tinyurl.com/Download-MyPrime,,Facebook Page
105
- 764373905916079,,https://www.facebook.com/primebankofficial/videos/1215388196467593/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-09T13:01:01.000Z,,,"Reach your squad goals with Prime Bank's Auto Loan solution.
106
-
107
- To know more please visit: tinyurl.com/Auto-Loan-Solution
108
-
109
- #PrimeBank #AutoLoan #SquadGoals",,100070304281907,3802,65,123,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/764373905916079,1749474061.0,http://tinyurl.com/Auto-Loan-Solution,,Facebook Page
110
- 764224309264372,,https://www.facebook.com/primebankofficial/posts/pfbid02qgE2g3WXiRX3rRYLtFwUwho4BK5RTkFPoPq7vcUf5b7fD8yk2CziYJNwjmFsVqHyl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-09T08:19:38.000Z,,,"Eid treats made sweeter with Prime Bank Cards at Platinum Residence.
111
-
112
- #PrimeBank #debitcard #creditcard #PlatinumResidence #eiduladha2025",,100070304281907,5356,19,599,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/764224309264372,1749457178.0,,,Facebook Page
113
- 763458219340981,,https://www.facebook.com/primebankofficial/posts/pfbid02qjW2itWfj5iygHQ5z3KeL7D2j69bH9mCrtPbUvqm5aR4br9eSo4zPkmTVwQPV3YYl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-08T08:00:29.000Z,,,"Stay close to the sea and closer to your family — with a Buy 1 Get 1 Free buffet dinner in elegance and comfort at Long Beach Hotel, Cox’s Bazar.
114
-
115
- #PrimeBank #debitcard #creditcard #longbeach #coxsbazar #buffet #dinner",,100070304281907,4851,12,541,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/763458219340981,1749369629.0,https://www.primebank.com.bd/,,Facebook Page
116
- 763400286013441,,https://www.facebook.com/primebankofficial/videos/1081789643825216/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-08T06:08:56.000Z,,,"মাইপ্রাইম অ্যাপ দিয়ে চার্জ ফ্রি ফান্ড ট্রান্সফার (Intra-bank, BEFTN, NPSB ও MFS) করুন যখন যেখানে প্রয়োজন!
117
-
118
- মাইপ্রাইম ডাউনলোড করতে ক্লিক করুন: tinyurl.com/Download-MyPrime
119
-
120
- #PrimeBank #MyPrime",,100070304281907,1218,42,61,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/763400286013441,1749362936.0,http://tinyurl.com/Download-MyPrime,,Facebook Page
121
- 763055656047904,,https://www.facebook.com/primebankofficial/posts/pfbid02HAGwawMPs19BSCst8hgjPZ5VxTfFkyXy75gUQKkTPTZBP6o82t772z2Ebxcsk4Bxl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-07T18:00:09.000Z,,,"Let's remind ourselves that true wellness isn’t just physical, but also emotional, social, and environmental. Because real wellness begins when we reconnect with ourselves and everything around us.
122
-
123
- #PrimeBankPLC #ReconnectMagenta #GlobalWellnessDay2025",,100070304281907,101,21,9,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/763055656047904,1749319209.0,,,Facebook Page
124
- 763028319383971,,https://www.facebook.com/primebankofficial/posts/pfbid02btom7HDADA3Li163W1iLg6euk8PnP9Jth4QCjryRYsgXKcEvf2hv89KtD9spQ7BCl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-07T17:12:25.000Z,,,"𝙀𝙞𝙙 𝘼𝙙𝙫𝙚𝙣𝙩𝙪𝙧𝙚𝙨 𝙎𝙩𝙖𝙧𝙩 𝙃𝙚𝙧𝙚!
125
-
126
- Hold hands, scream together, and laugh louder — enjoy the thrill of Eid with exclusive savings at Mana Bay.
127
-
128
- #PrimeBank #debitcard #CreditCard #ManaBay #eiduladha2025 #amusementpark",,100070304281907,6760,25,352,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/763028319383971,1749316345.0,https://www.primebank.com.bd/,,Facebook Page
129
- 762803282739808,,https://www.facebook.com/primebankofficial/posts/pfbid021T2VTsquYhkKtR3srW5XZeV6PZoRiQcH1TRz8C4g85GFGg6yZzpzDQi7KPhuRctgl,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-07T10:55:18.000Z,,,"Escape into the world of movies with Prime Bank Mastercard Credit Cards!
130
-
131
- #PrimeBank #creditcard #Mastercard #StarCineplex #movietickets",,100070304281907,4811,12,629,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/762803282739808,1749293718.0,https://www.primebank.com.bd/,,Facebook Page
132
- 762381689448634,,https://www.facebook.com/primebankofficial/videos/1259922195481755/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-06T20:18:59.000Z,,,"তিন দশক ধরে দক্ষতার সাথে বাংলাদেশে শরীয়াহ্‌সম্মত ব্যাংকিং সেবা দিয়ে আসছে প্রাইম ব্যাংকের হাসানাহ ইসলামী ব্যাংকিং। তাই হালাল সঞ্চয়ের মাধ্যমে সমৃদ্ধ ভবিষ্যৎ নিশ্চিত করতে প্রাইম ব্যাংকের হাসানাহ ইসলামী ব্যাংকিং-ই হোক আপনার প্রথম পছন্দ।
133
-
134
- #PrimeBank #halaldeposit #halal #Hasanah #IslamiBanking #Deposit",,100070304281907,2839,96,50,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/762381689448634,1749241139.0,,,Facebook Page
135
- 762195369467266,,https://www.facebook.com/primebankofficial/posts/4062249187390337:4062249187390337,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-06T14:35:46.000Z,,,,,100070304281907,111,5,10,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/762195369467266,1749220546.0,https://www.primebank.com.bd/,,Facebook Page
136
- 762138419472961,,https://www.facebook.com/primebankofficial/videos/1040923977622768/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-06T13:01:28.000Z,,,"ঈদ মোবারক 🎉
137
-
138
- #PrimeBank #EidAlAdha2025 #Eid2025 #Compassion&Unity #DivineSacrifice",,100070304281907,125,142,11,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/762138419472961,1749214888.0,https://www.primebank.com.bd/,,Facebook Page
139
- 761969766156493,,https://www.facebook.com/primebankofficial/videos/1339381793804859/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-06T07:46:08.000Z,,,"Customer Engagement Program at Dhanmondi Branch, organized by Prime Bank Neera in association with Prime Bank’s Sat Masjid Road Branch.
140
-
141
- #PrimeBank #Neera #ami_neera #CustomerEngagement #PowerToYou",,100070304281907,167,15,7,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/761969766156493,1749195968.0,,,Facebook Page
142
- 761854066168063,,https://www.facebook.com/primebankofficial/videos/1366201268008884/,https://www.facebook.com/primebankofficial,https://www.facebook.com/primebankofficial,2025-06-06T03:44:03.000Z,,,"মাইপ্রাইম অ্যাপ দিয়ে চার্জ ফ্রি মোবাইল টপ-আপ করুন যখন যেখানে প্রয়োজন!
143
-
144
- মাইপ্রাইম ডাউনলোড করতে ক্লিক করুন: tinyurl.com/Download-MyPrime
145
-
146
- #PrimeBank #MyPrime",,100070304281907,891,9,25,,,,,,,,,,,,,2025-06-18 12:03:17,2025-06-18,12:03:17,,,,,primebankofficial,https://www.facebook.com/100070304281907/posts/761854066168063,1749181443.0,http://tinyurl.com/Download-MyPrime,,Facebook Page
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/uploads/test_review_comments.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ Prime Bank provides exceptional service. Highly recommend!
2
+ Terrible experience with Prime Bank customer support.
3
+ Prime Bank mobile app keeps crashing. Please fix this!
4
+ Love the new features in Prime Bank online banking.
5
+ Why does Prime Bank charge so many fees?
6
+ BRAC Bank is also a good option for students.
data/uploads/test_social_media_posts.csv ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ text,date,likes,shares,comments,location
2
+ Prime Bank has the best customer service! Love their mobile app.,2024-01-01,45,5,10,Dhaka
3
+ Worst experience at Prime Bank branch today. Waited 2 hours!,2024-01-02,12,2,3,Chittagong
4
+ How do I apply for a loan at Prime Bank?,2024-01-03,5,1,2,Dhaka
5
+ Prime Bank ATM is not working again. So frustrated!,2024-01-04,89,15,22,Sylhet
6
+ Thank you Prime Bank staff for helping with my account.,2024-01-05,34,8,9,Dhaka
7
+ What are Prime Bank interest rates?,2024-01-06,8,1,3,Rajshahi
8
+ Prime Bank online banking is confusing.,2024-01-07,15,3,5,Dhaka
9
+ Excellent service at Prime Bank downtown branch!,2024-01-08,67,12,14,Chittagong
10
+ Prime Bank charged me hidden fees. Very disappointed.,2024-01-09,102,25,30,Sylhet
11
+ Can someone explain Prime Bank credit card benefits?,2024-01-10,22,4,5,Dhaka
12
+ "Heard good things about Eastern Bank, but Prime Bank is still my go-to.",2024-01-11,18,2,4,Dhaka
13
+ Comparing BRAC Bank and Prime Bank for a new account.,2024-01-12,33,6,8,Chittagong
14
+ "City Bank has a nice app, but their service is slow.",2024-01-13,50,9,11,Dhaka
15
+ DBBL needs to improve their network coverage.,2024-01-14,41,7,10,Sylhet
requirements.txt CHANGED
@@ -1,7 +1,144 @@
1
- streamlit
2
- pandas
3
- plotly
4
- textblob
5
- numpy
6
- nltk
7
- openai
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ altair==5.5.0
2
+ annotated-types==0.7.0
3
+ anyio==4.9.0
4
+ argon2-cffi==23.1.0
5
+ argon2-cffi-bindings==21.2.0
6
+ arrow==1.3.0
7
+ asttokens==3.0.0
8
+ async-lru==2.0.5
9
+ attrs==25.3.0
10
+ babel==2.17.0
11
+ beautifulsoup4==4.13.4
12
+ bleach==6.2.0
13
+ blinker==1.9.0
14
+ cachetools==6.1.0
15
+ certifi==2025.4.26
16
+ cffi==1.17.1
17
+ charset-normalizer==3.4.2
18
+ click==8.2.1
19
+ colorama==0.4.6
20
+ comm==0.2.2
21
+ contourpy==1.3.2
22
+ cycler==0.12.1
23
+ debugpy==1.8.14
24
+ decorator==5.2.1
25
+ defusedxml==0.7.1
26
+ distro==1.9.0
27
+ executing==2.2.0
28
+ fastjsonschema==2.21.1
29
+ filelock==3.13.1
30
+ fonttools==4.58.1
31
+ fqdn==1.5.1
32
+ fsspec==2024.6.1
33
+ gitdb==4.0.12
34
+ GitPython==3.1.44
35
+ h11==0.16.0
36
+ httpcore==1.0.9
37
+ httpx==0.28.1
38
+ idna==3.10
39
+ ipykernel==6.29.5
40
+ ipython==9.2.0
41
+ ipython_pygments_lexers==1.1.1
42
+ isoduration==20.11.0
43
+ jedi==0.19.2
44
+ Jinja2==3.1.6
45
+ jiter==0.10.0
46
+ joblib==1.5.1
47
+ json5==0.12.0
48
+ jsonpointer==3.0.0
49
+ jsonschema==4.24.0
50
+ jsonschema-specifications==2025.4.1
51
+ jupyter-events==0.12.0
52
+ jupyter-lsp==2.2.5
53
+ jupyter-server-mathjax==0.2.6
54
+ jupyter_client==8.6.3
55
+ jupyter_core==5.8.1
56
+ jupyter_server==2.16.0
57
+ jupyter_server_terminals==0.5.3
58
+ jupyterlab==4.4.3
59
+ jupyterlab_git==0.51.1
60
+ jupyterlab_pygments==0.3.0
61
+ jupyterlab_server==2.27.3
62
+ kiwisolver==1.4.8
63
+ MarkupSafe==3.0.2
64
+ matplotlib==3.10.3
65
+ matplotlib-inline==0.1.7
66
+ mistune==3.1.3
67
+ mpmath==1.3.0
68
+ narwhals==1.41.0
69
+ nbclient==0.10.2
70
+ nbconvert==7.16.6
71
+ nbdime==4.0.2
72
+ nbformat==5.10.4
73
+ nest-asyncio==1.6.0
74
+ networkx==3.3
75
+ nltk==3.9.1
76
+ notebook_shim==0.2.4
77
+ numpy==2.2.6
78
+ openai==1.88.0
79
+ overrides==7.7.0
80
+ packaging==25.0
81
+ pandas==2.2.3
82
+ pandocfilters==1.5.1
83
+ parso==0.8.4
84
+ pexpect==4.9.0
85
+ pillow==11.2.1
86
+ platformdirs==4.3.8
87
+ plotly==6.1.2
88
+ prometheus_client==0.22.0
89
+ prompt_toolkit==3.0.51
90
+ protobuf==6.31.1
91
+ psutil==7.0.0
92
+ ptyprocess==0.7.0
93
+ pure_eval==0.2.3
94
+ pyarrow==20.0.0
95
+ pycparser==2.22
96
+ pydantic==2.11.7
97
+ pydantic_core==2.33.2
98
+ pydeck==0.9.1
99
+ Pygments==2.19.1
100
+ pyparsing==3.2.3
101
+ python-dateutil==2.9.0.post0
102
+ python-json-logger==3.3.0
103
+ pytz==2025.2
104
+ PyYAML==6.0.2
105
+ pyzmq==26.4.0
106
+ referencing==0.36.2
107
+ regex==2024.11.6
108
+ requests==2.32.3
109
+ rfc3339-validator==0.1.4
110
+ rfc3986-validator==0.1.1
111
+ rpds-py==0.25.1
112
+ scikit-learn==1.6.1
113
+ scipy==1.15.3
114
+ seaborn==0.13.2
115
+ Send2Trash==1.8.3
116
+ setuptools==80.9.0
117
+ six==1.17.0
118
+ smmap==5.0.2
119
+ sniffio==1.3.1
120
+ soupsieve==2.7
121
+ stack-data==0.6.3
122
+ streamlit==1.46.0
123
+ sympy==1.13.3
124
+ tenacity==9.1.2
125
+ terminado==0.18.1
126
+ textblob==0.19.0
127
+ threadpoolctl==3.6.0
128
+ tinycss2==1.4.0
129
+ toml==0.10.2
130
+ torch==2.7.0+cpu
131
+ tornado==6.5.1
132
+ tqdm==4.67.1
133
+ traitlets==5.14.3
134
+ types-python-dateutil==2.9.0.20250516
135
+ typing-inspection==0.4.1
136
+ typing_extensions==4.13.2
137
+ tzdata==2025.2
138
+ uri-template==1.3.0
139
+ urllib3==2.4.0
140
+ watchdog==6.0.0
141
+ wcwidth==0.2.13
142
+ webcolors==24.11.1
143
+ webencodings==0.5.1
144
+ websocket-client==1.8.0
src/visualizations.py CHANGED
@@ -1,380 +1,177 @@
 
 
1
  import plotly.express as px
2
  import plotly.graph_objects as go
3
  from plotly.subplots import make_subplots
4
  import pandas as pd
 
 
5
 
6
  def create_sentiment_pie(df):
7
  """Create sentiment distribution pie chart"""
8
  sentiment_counts = df['sentiment'].value_counts()
9
-
10
  fig = px.pie(
11
  values=sentiment_counts.values,
12
  names=sentiment_counts.index,
13
  title="Sentiment Distribution",
14
- color_discrete_map={
15
- 'Positive': '#2ecc71',
16
- 'Negative': '#e74c3c',
17
- 'Neutral': '#95a5a6'
18
- }
19
  )
20
-
21
- fig.update_traces(
22
- textposition='inside',
23
- textinfo='percent+label',
24
- hovertemplate='<b>%{label}</b><br>Count: %{value}<br>Percentage: %{percent}<extra></extra>'
25
- )
26
-
27
  return fig
28
 
29
  def create_emotion_bar(df):
30
  """Create emotion distribution bar chart"""
31
  emotion_counts = df['emotion'].value_counts()
32
-
33
- # Define colors for emotions
34
- color_map = {
35
- 'Joy': '#f39c12',
36
- 'Frustration': '#e74c3c',
37
- 'Confusion': '#3498db',
38
- 'Anxiety': '#9b59b6',
39
- 'Neutral': '#95a5a6'
40
- }
41
-
42
- colors = [color_map.get(emotion, '#95a5a6') for emotion in emotion_counts.index]
43
-
44
  fig = px.bar(
45
- x=emotion_counts.index,
46
- y=emotion_counts.values,
47
- title="Emotion Detection",
48
- labels={'x': 'Emotion', 'y': 'Count'},
49
- color=emotion_counts.index,
50
- color_discrete_map=color_map
51
- )
52
-
53
- fig.update_layout(
54
- showlegend=False,
55
- xaxis_tickangle=-45,
56
- yaxis=dict(gridcolor='rgba(0,0,0,0.1)')
57
  )
58
-
59
  return fig
60
 
61
  def create_category_donut(df):
62
  """Create post category donut chart"""
63
  category_counts = df['category'].value_counts()
64
-
65
- # Define colors for categories
66
  color_sequence = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']
67
-
68
  fig = px.pie(
69
- values=category_counts.values,
70
- names=category_counts.index,
71
- title="Post Categories",
72
- hole=0.4,
73
- color_discrete_sequence=color_sequence
74
  )
75
-
76
- # Add text in center
77
- fig.update_traces(
78
- textposition='inside',
79
- textinfo='percent+label',
80
- hovertemplate='<b>%{label}</b><br>Count: %{value}<br>Percentage: %{percent}<extra></extra>'
81
- )
82
-
83
- # Add annotation in center
84
- fig.add_annotation(
85
- text=f"Total<br>{len(df)}",
86
- x=0.5, y=0.5,
87
- xref="paper", yref="paper",
88
- showarrow=False,
89
- font=dict(size=20)
90
- )
91
-
92
  return fig
93
 
94
  def create_mentions_timeline(df):
95
  """Create timeline of Prime Bank mentions if date column exists"""
96
  date_columns = ['date', 'created_at', 'timestamp', 'Date', 'post_date']
97
  date_col = None
98
-
99
- # Find date column
100
  for col in date_columns:
101
  if col in df.columns:
102
  date_col = col
103
  break
104
-
105
- if not date_col:
106
- return None
107
-
108
  try:
109
- # Parse dates
110
  df['date_parsed'] = pd.to_datetime(df[date_col], errors='coerce')
111
-
112
- # Remove invalid dates
113
  df_valid = df[df['date_parsed'].notna()]
114
-
115
- if len(df_valid) == 0:
116
- return None
117
-
118
- # Group by date
119
- timeline_df = df_valid.groupby(df_valid['date_parsed'].dt.date).agg({
120
- 'prime_mentions': 'sum',
121
- 'sentiment': lambda x: (x == 'Positive').sum()
122
- }).reset_index()
123
-
124
  timeline_df.columns = ['date', 'mentions', 'positive_posts']
125
-
126
- # Create figure with secondary y-axis
127
  fig = make_subplots(specs=[[{"secondary_y": True}]])
128
-
129
- # Add mentions line
130
- fig.add_trace(
131
- go.Scatter(
132
- x=timeline_df['date'],
133
- y=timeline_df['mentions'],
134
- name='Total Mentions',
135
- line=dict(color='#3498db', width=3),
136
- mode='lines+markers'
137
- ),
138
- secondary_y=False,
139
- )
140
-
141
- # Add positive posts line
142
- fig.add_trace(
143
- go.Scatter(
144
- x=timeline_df['date'],
145
- y=timeline_df['positive_posts'],
146
- name='Positive Posts',
147
- line=dict(color='#2ecc71', width=2, dash='dot'),
148
- mode='lines+markers'
149
- ),
150
- secondary_y=True,
151
- )
152
-
153
- # Update layout
154
  fig.update_xaxes(title_text="Date")
155
  fig.update_yaxes(title_text="Number of Mentions", secondary_y=False)
156
  fig.update_yaxes(title_text="Positive Posts", secondary_y=True)
157
-
158
- fig.update_layout(
159
- title="Prime Bank Mentions Over Time",
160
- hovermode='x unified',
161
- showlegend=True,
162
- legend=dict(
163
- yanchor="top",
164
- y=0.99,
165
- xanchor="left",
166
- x=0.01
167
- )
168
- )
169
-
170
  return fig
171
-
172
  except Exception as e:
173
  print(f"Error creating timeline: {e}")
174
  return None
175
 
176
- def create_summary_metrics(df):
177
- """Calculate summary metrics for display"""
178
- total_posts = len(df)
179
- prime_posts = len(df[df['prime_mentions'] > 0])
180
- total_mentions = df['prime_mentions'].sum()
181
-
182
- # Calculate positive sentiment rate
183
- if prime_posts > 0:
184
- prime_df = df[df['prime_mentions'] > 0]
185
- positive_rate = (prime_df['sentiment'] == 'Positive').sum() / prime_posts * 100
186
- else:
187
- positive_rate = 0
188
-
189
- metrics = {
190
- 'Total Posts Analyzed': f"{total_posts:,}",
191
- 'Posts Mentioning Prime Bank': f"{prime_posts:,}",
192
- 'Total Prime Bank Mentions': f"{total_mentions:,}",
193
- 'Positive Sentiment Rate': f"{positive_rate:.1f}%"
194
- }
195
-
196
- return metrics
197
-
198
  def create_viral_posts_chart(df, top_n=10):
199
  """Create horizontal bar chart of most viral posts"""
200
- # Get top viral posts
201
  top_viral = df.nlargest(top_n, 'viral_score')
202
-
203
- # Truncate text for display
204
- top_viral['text_truncated'] = top_viral['text'].apply(
205
- lambda x: x[:50] + '...' if len(str(x)) > 50 else x
206
- )
207
-
208
- # Create horizontal bar chart
209
  fig = px.bar(
210
- top_viral,
211
- x='viral_score',
212
- y='text_truncated',
213
- orientation='h',
214
- title=f'Top {top_n} Viral Posts',
215
- color='sentiment',
216
- color_discrete_map={
217
- 'Positive': '#2ecc71',
218
- 'Negative': '#e74c3c',
219
- 'Neutral': '#95a5a6'
220
- },
221
  hover_data=['text', 'emotion', 'category']
222
  )
223
-
224
- fig.update_layout(
225
- yaxis={'categoryorder': 'total ascending'},
226
- xaxis_title="Viral Score",
227
- yaxis_title="Post Preview",
228
- showlegend=True
229
- )
230
-
231
  return fig
232
 
233
- def create_word_frequency_chart(df, top_n=15):
234
- """Create word frequency chart for Prime Bank posts"""
235
- from collections import Counter
236
- import re
237
-
238
- # Get only Prime Bank posts
239
- prime_posts = df[df['prime_mentions'] > 0]['text'].dropna()
240
-
241
- if len(prime_posts) == 0:
242
- return None
243
-
244
- # Combine all text
245
- all_text = ' '.join(prime_posts.astype(str)).lower()
246
 
247
- # Remove common words and Prime Bank itself
248
- stop_words = {
249
- 'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
250
- 'of', 'with', 'is', 'was', 'are', 'were', 'been', 'be', 'have', 'has',
251
- 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may',
252
- 'might', 'must', 'can', 'prime', 'bank', 'primebank', 'i', 'me', 'my',
253
- 'we', 'you', 'your', 'they', 'their', 'this', 'that', 'these', 'those'
 
 
 
 
 
 
 
 
 
254
  }
 
 
 
 
 
 
 
 
 
255
 
256
- # Extract words
257
- words = re.findall(r'\b[a-z]+\b', all_text)
258
- words = [word for word in words if word not in stop_words and len(word) > 3]
259
-
260
- # Count frequency
261
- word_freq = Counter(words).most_common(top_n)
262
-
263
- if not word_freq:
264
  return None
 
 
 
265
 
266
- # Create dataframe
267
- freq_df = pd.DataFrame(word_freq, columns=['Word', 'Frequency'])
268
 
269
- # Create bar chart
270
  fig = px.bar(
271
- freq_df,
272
- x='Frequency',
273
- y='Word',
274
- orientation='h',
275
- title=f'Top {top_n} Words in Prime Bank Posts',
276
- color='Frequency',
277
- color_continuous_scale='Blues'
278
- )
279
-
280
- fig.update_layout(
281
- yaxis={'categoryorder': 'total ascending'},
282
- showlegend=False
283
  )
284
-
 
285
  return fig
286
 
287
- def create_sentiment_by_category(df):
288
- """Create stacked bar chart of sentiment by category"""
289
- # Filter for Prime Bank mentions
290
- prime_df = df[df['prime_mentions'] > 0]
291
-
292
- if len(prime_df) == 0:
293
  return None
294
 
295
- # Create crosstab
296
- sentiment_category = pd.crosstab(
297
- prime_df['category'],
298
- prime_df['sentiment'],
299
- normalize='index'
300
- ) * 100
301
-
302
- # Create stacked bar chart
303
- fig = go.Figure()
304
-
305
- sentiments = ['Positive', 'Negative', 'Neutral']
306
- colors = {'Positive': '#2ecc71', 'Negative': '#e74c3c', 'Neutral': '#95a5a6'}
307
 
308
- for sentiment in sentiments:
309
- if sentiment in sentiment_category.columns:
310
- fig.add_trace(go.Bar(
311
- name=sentiment,
312
- x=sentiment_category.index,
313
- y=sentiment_category[sentiment],
314
- marker_color=colors.get(sentiment, '#95a5a6'),
315
- hovertemplate='%{x}<br>%{y:.1f}%<extra></extra>'
316
- ))
317
 
318
- fig.update_layout(
319
- barmode='stack',
320
- title='Sentiment Distribution by Post Category',
321
- xaxis_title='Category',
322
- yaxis_title='Percentage',
323
- yaxis=dict(tickformat='.0f', ticksuffix='%'),
324
- showlegend=True,
325
- legend=dict(
326
- orientation="h",
327
- yanchor="bottom",
328
- y=1.02,
329
- xanchor="right",
330
- x=1
331
- )
332
- )
333
 
334
- return fig
335
-
336
- def create_priority_matrix(df):
337
- """Create scatter plot showing priority posts"""
338
- # Filter for Prime Bank mentions
339
- prime_df = df[df['prime_mentions'] > 0].copy()
340
-
341
- if len(prime_df) == 0:
342
  return None
343
-
344
- # Calculate urgency score (based on negative sentiment + complaints)
345
- prime_df['urgency'] = 0
346
- prime_df.loc[prime_df['sentiment'] == 'Negative', 'urgency'] += 2
347
- prime_df.loc[prime_df['category'] == 'Complaint', 'urgency'] += 2
348
- prime_df.loc[prime_df['emotion'].isin(['Frustration', 'Anxiety']), 'urgency'] += 1
349
-
350
- # Create scatter plot
351
- fig = px.scatter(
352
- prime_df,
353
- x='viral_score',
354
- y='urgency',
355
- size='prime_mentions',
356
- color='sentiment',
357
- hover_data=['text', 'emotion', 'category'],
358
- title='Priority Matrix: Viral Score vs Urgency',
359
- color_discrete_map={
360
- 'Positive': '#2ecc71',
361
- 'Negative': '#e74c3c',
362
- 'Neutral': '#95a5a6'
363
- }
364
- )
365
-
366
- # Add quadrant lines
367
- fig.add_hline(y=2.5, line_dash="dash", line_color="gray", opacity=0.5)
368
- fig.add_vline(x=prime_df['viral_score'].median(), line_dash="dash", line_color="gray", opacity=0.5)
369
-
370
- # Add quadrant labels
371
- fig.add_annotation(x=0.95, y=0.95, text="High Priority", xref="paper", yref="paper", showarrow=False)
372
- fig.add_annotation(x=0.05, y=0.95, text="Monitor", xref="paper", yref="paper", showarrow=False)
373
-
374
- fig.update_layout(
375
- xaxis_title="Viral Score (Reach)",
376
- yaxis_title="Urgency Score",
377
- showlegend=True
378
  )
379
-
380
  return fig
 
1
+ # src/visualizations.py
2
+
3
  import plotly.express as px
4
  import plotly.graph_objects as go
5
  from plotly.subplots import make_subplots
6
  import pandas as pd
7
+ from collections import Counter
8
+ import re
9
 
10
  def create_sentiment_pie(df):
11
  """Create sentiment distribution pie chart"""
12
  sentiment_counts = df['sentiment'].value_counts()
 
13
  fig = px.pie(
14
  values=sentiment_counts.values,
15
  names=sentiment_counts.index,
16
  title="Sentiment Distribution",
17
+ color_discrete_map={'Positive': '#2ecc71', 'Negative': '#e74c3c', 'Neutral': '#95a5a6'}
 
 
 
 
18
  )
19
+ fig.update_traces(textposition='inside', textinfo='percent+label', hovertemplate='<b>%{label}</b><br>Count: %{value}<br>Percentage: %{percent}<extra></extra>')
 
 
 
 
 
 
20
  return fig
21
 
22
  def create_emotion_bar(df):
23
  """Create emotion distribution bar chart"""
24
  emotion_counts = df['emotion'].value_counts()
25
+ color_map = {'Joy': '#f39c12', 'Frustration': '#e74c3c', 'Confusion': '#3498db', 'Anxiety': '#9b59b6', 'Neutral': '#95a5a6'}
 
 
 
 
 
 
 
 
 
 
 
26
  fig = px.bar(
27
+ x=emotion_counts.index, y=emotion_counts.values, title="Emotion Detection",
28
+ labels={'x': 'Emotion', 'y': 'Count'}, color=emotion_counts.index, color_discrete_map=color_map
 
 
 
 
 
 
 
 
 
 
29
  )
30
+ fig.update_layout(showlegend=False, xaxis_tickangle=-45, yaxis=dict(gridcolor='rgba(0,0,0,0.1)'))
31
  return fig
32
 
33
  def create_category_donut(df):
34
  """Create post category donut chart"""
35
  category_counts = df['category'].value_counts()
 
 
36
  color_sequence = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']
 
37
  fig = px.pie(
38
+ values=category_counts.values, names=category_counts.index, title="Post Categories",
39
+ hole=0.4, color_discrete_sequence=color_sequence
 
 
 
40
  )
41
+ fig.update_traces(textposition='inside', textinfo='percent+label', hovertemplate='<b>%{label}</b><br>Count: %{value}<br>Percentage: %{percent}<extra></extra>')
42
+ fig.add_annotation(text=f"Total<br>{len(df)}", x=0.5, y=0.5, xref="paper", yref="paper", showarrow=False, font=dict(size=20))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  return fig
44
 
45
  def create_mentions_timeline(df):
46
  """Create timeline of Prime Bank mentions if date column exists"""
47
  date_columns = ['date', 'created_at', 'timestamp', 'Date', 'post_date']
48
  date_col = None
 
 
49
  for col in date_columns:
50
  if col in df.columns:
51
  date_col = col
52
  break
53
+ if not date_col: return None
 
 
 
54
  try:
 
55
  df['date_parsed'] = pd.to_datetime(df[date_col], errors='coerce')
 
 
56
  df_valid = df[df['date_parsed'].notna()]
57
+ if len(df_valid) == 0: return None
58
+ timeline_df = df_valid.groupby(df_valid['date_parsed'].dt.date).agg({'prime_mentions': 'sum', 'sentiment': lambda x: (x == 'Positive').sum()}).reset_index()
 
 
 
 
 
 
 
 
59
  timeline_df.columns = ['date', 'mentions', 'positive_posts']
 
 
60
  fig = make_subplots(specs=[[{"secondary_y": True}]])
61
+ fig.add_trace(go.Scatter(x=timeline_df['date'], y=timeline_df['mentions'], name='Total Mentions', line=dict(color='#3498db', width=3), mode='lines+markers'), secondary_y=False)
62
+ fig.add_trace(go.Scatter(x=timeline_df['date'], y=timeline_df['positive_posts'], name='Positive Posts', line=dict(color='#2ecc71', width=2, dash='dot'), mode='lines+markers'), secondary_y=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  fig.update_xaxes(title_text="Date")
64
  fig.update_yaxes(title_text="Number of Mentions", secondary_y=False)
65
  fig.update_yaxes(title_text="Positive Posts", secondary_y=True)
66
+ fig.update_layout(title="Prime Bank Mentions Over Time", hovermode='x unified', showlegend=True, legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))
 
 
 
 
 
 
 
 
 
 
 
 
67
  return fig
 
68
  except Exception as e:
69
  print(f"Error creating timeline: {e}")
70
  return None
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  def create_viral_posts_chart(df, top_n=10):
73
  """Create horizontal bar chart of most viral posts"""
74
+ if 'viral_score' not in df.columns or df.empty: return None
75
  top_viral = df.nlargest(top_n, 'viral_score')
76
+ top_viral['text_truncated'] = top_viral['text'].apply(lambda x: x[:50] + '...' if len(str(x)) > 50 else x)
 
 
 
 
 
 
77
  fig = px.bar(
78
+ top_viral, x='viral_score', y='text_truncated', orientation='h', title=f'Top {top_n} Viral Posts',
79
+ color='sentiment', color_discrete_map={'Positive': '#2ecc71', 'Negative': '#e74c3c', 'Neutral': '#95a5a6'},
 
 
 
 
 
 
 
 
 
80
  hover_data=['text', 'emotion', 'category']
81
  )
82
+ fig.update_layout(yaxis={'categoryorder': 'total ascending'}, xaxis_title="Viral Score", yaxis_title="Post Preview", showlegend=True)
 
 
 
 
 
 
 
83
  return fig
84
 
85
+ # --- MODIFIED FUNCTION ---
86
+ def create_summary_metrics(df):
87
+ """Calculate summary metrics for display, including new scores."""
88
+ if 'prime_mentions' not in df.columns or df.empty:
89
+ return {
90
+ 'Bank Sentiment Score': 0,
91
+ 'Engagement-Weighted Sentiment': '0.00'
92
+ }
93
+
94
+ prime_df = df[df['prime_mentions'] > 0]
 
 
 
95
 
96
+ if not prime_df.empty:
97
+ positive_mentions = (prime_df['sentiment'] == 'Positive').sum()
98
+ negative_mentions = (prime_df['sentiment'] == 'Negative').sum()
99
+
100
+ # New Metric 1: Bank Sentiment Score
101
+ bank_sentiment_score = positive_mentions - negative_mentions
102
+
103
+ # New Metric 2: Engagement-Weighted Sentiment
104
+ ew_sentiment = (prime_df['polarity'] * prime_df['viral_score']).sum()
105
+ else:
106
+ bank_sentiment_score = 0
107
+ ew_sentiment = 0
108
+
109
+ metrics = {
110
+ 'Bank Sentiment Score': f"{bank_sentiment_score:+,}", # Add sign
111
+ 'Engagement-Weighted Sentiment': f"{ew_sentiment:,.2f}"
112
  }
113
+ return metrics
114
+
115
+ # --- NEW FUNCTION 1 ---
116
+ def create_bank_comparison_chart(df):
117
+ """Create bar chart comparing mentions of Prime Bank vs competitors."""
118
+ if 'all_banks_mentioned' not in df.columns or df.empty:
119
+ return None
120
+
121
+ mentions = df['all_banks_mentioned'].explode().dropna()
122
 
123
+ if mentions.empty:
 
 
 
 
 
 
 
124
  return None
125
+
126
+ bank_counts = mentions.value_counts().reset_index()
127
+ bank_counts.columns = ['Bank', 'Mentions']
128
 
129
+ bank_counts['Bank'] = bank_counts['Bank'].str.replace('_', ' ').str.title()
 
130
 
 
131
  fig = px.bar(
132
+ bank_counts, x='Bank', y='Mentions', title='Bank Mention Comparison',
133
+ color='Bank', text='Mentions'
 
 
 
 
 
 
 
 
 
 
134
  )
135
+ fig.update_layout(xaxis_title=None, yaxis_title="Total Mentions", showlegend=False)
136
+ fig.update_traces(textposition='outside')
137
  return fig
138
 
139
+ # --- NEW FUNCTION 2 ---
140
+ def create_geolocation_map(df, mapbox_token=None):
141
+ """Create a map showing where Prime Bank mentions are coming from."""
142
+ if 'location' not in df.columns or df.empty:
143
+ st.info("No 'location' column found in data to generate map.")
 
144
  return None
145
 
146
+ geo_mapping = {
147
+ 'Dhaka': {'lat': 23.8103, 'lon': 90.4125},
148
+ 'Chittagong': {'lat': 22.3569, 'lon': 91.7832},
149
+ 'Sylhet': {'lat': 24.8949, 'lon': 91.8687},
150
+ 'Rajshahi': {'lat': 24.3745, 'lon': 88.6042},
151
+ 'Khulna': {'lat': 22.8456, 'lon': 89.5403},
152
+ 'Barisal': {'lat': 22.7010, 'lon': 90.3535},
153
+ 'Rangpur': {'lat': 25.7439, 'lon': 89.2752},
154
+ }
 
 
 
155
 
156
+ df_loc = df.copy()
157
+ df_loc['lat'] = df_loc['location'].map(lambda x: geo_mapping.get(x, {}).get('lat'))
158
+ df_loc['lon'] = df_loc['location'].map(lambda x: geo_mapping.get(x, {}).get('lon'))
 
 
 
 
 
 
159
 
160
+ df_loc.dropna(subset=['lat', 'lon'], inplace=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
 
162
+ if df_loc.empty:
163
+ st.info("No valid locations found in data to plot on map.")
 
 
 
 
 
 
164
  return None
165
+
166
+ location_counts = df_loc.groupby(['location', 'lat', 'lon']).size().reset_index(name='mentions')
167
+
168
+ fig = px.scatter_mapbox(
169
+ location_counts, lat="lat", lon="lon", size="mentions", color="mentions",
170
+ hover_name="location", hover_data={"lat": False, "lon": False, "mentions": True},
171
+ color_continuous_scale=px.colors.cyclical.IceFire, size_max=30, zoom=5,
172
+ center={"lat": 23.6850, "lon": 90.3563},
173
+ title="Geographic Hotspots for Prime Bank Mentions",
174
+ mapbox_style="carto-positron"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  )
176
+ fig.update_layout(margin={"r":0,"t":40,"l":0,"b":0})
177
  return fig
test_reviews.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Prime Bank provides exceptional service. Highly recommend!
2
+ Terrible experience with Prime Bank customer support.
3
+ Prime Bank mobile app keeps crashing. Please fix this!
4
+ Love the new features in Prime Bank online banking.
5
+ Why does Prime Bank charge so many fees?
test_social_media_data.csv ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ text,date,likes,shares
2
+ Prime Bank has the best customer service! Love their mobile app.,2024-01-01,45,5
3
+ Worst experience at Prime Bank branch today. Waited 2 hours!,2024-01-02,12,2
4
+ How do I apply for a loan at Prime Bank?,2024-01-03,5,1
5
+ Prime Bank ATM is not working again. So frustrated!,2024-01-04,89,15
6
+ Thank you Prime Bank staff for helping with my account.,2024-01-05,34,8
7
+ What are Prime Bank interest rates?,2024-01-06,8,1
8
+ Prime Bank online banking is confusing.,2024-01-07,15,3
9
+ Excellent service at Prime Bank downtown branch!,2024-01-08,67,12
10
+ Prime Bank charged me hidden fees. Very disappointed.,2024-01-09,102,25
11
+ Can someone explain Prime Bank credit card benefits?,2024-01-10,22,4