-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_docx_summary.py
More file actions
256 lines (221 loc) · 12.2 KB
/
create_docx_summary.py
File metadata and controls
256 lines (221 loc) · 12.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#!/usr/bin/env python3
from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.style import WD_STYLE_TYPE
from docx.oxml.shared import OxmlElement, qn
def create_opera_analysis_docx():
# Create a new document
doc = Document()
# Add title
title = doc.add_heading('Opera Browser Switch Analysis', 0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
subtitle = doc.add_heading('Comprehensive User Research Summary', level=1)
subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Executive Summary
doc.add_heading('Executive Summary', level=1)
summary_text = """This comprehensive analysis examines 8,592 user responses to the question: "What could be the reason for you to switch to another browser?" The data reveals critical insights about user satisfaction, pain points, and potential churn factors for Opera browser.
The analysis identified performance issues as the primary concern (26.7% of users), followed by feature dissatisfaction (18.0%) and website compatibility problems (14.0%). However, a significant portion of users (12.0%) expressed strong loyalty to Opera, indicating a solid retention foundation."""
doc.add_paragraph(summary_text)
# Methodology
doc.add_heading('Methodology', level=1)
methodology_items = [
"Total Responses Analyzed: 8,592",
"Processing Method: Batch analysis in groups of 1,000 responses",
"Analysis Type: Semantic clustering and thematic categorization",
"Response Period: June 2025",
"Languages: 8 primary languages analyzed"
]
for item in methodology_items:
p = doc.add_paragraph(item, style='List Bullet')
# Language Distribution
doc.add_heading('Language Distribution', level=1)
# Create table for language distribution
table = doc.add_table(rows=1, cols=3)
table.style = 'Table Grid'
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Language'
hdr_cells[1].text = 'Responses'
hdr_cells[2].text = 'Percentage'
# Language data
lang_data = [
('English', '4,857', '56.5%'),
('Portuguese', '2,293', '26.7%'),
('German', '617', '7.2%'),
('French', '275', '3.2%'),
('Polish', '240', '2.8%'),
('Spanish', '137', '1.6%'),
('Italian', '69', '0.8%'),
('Other/Mixed', '104', '1.2%')
]
for lang, count, percent in lang_data:
row_cells = table.add_row().cells
row_cells[0].text = lang
row_cells[1].text = count
row_cells[2].text = percent
# Top 10 Reasons
doc.add_heading('Top 10 Reasons Users Would Switch Browsers', level=1)
reasons_data = [
{
'title': '1. Performance Issues (26.7% - 2,293 responses)',
'subtitle': 'Most Critical User Concern',
'themes': ['RAM usage and memory consumption', 'CPU performance issues', 'Browser crashes and freezing', 'General slowness and lag', 'Memory leaks during extended use'],
'quotes': [
'Opera uses a lot of memory, can\'t have it open always without it lagging',
'RAM and CPU usage, weather feature also stops working',
'The memory leaks. Opera gets slower every video I watch',
'operagx was consuming 3gb of ram JUST WITH 1 TAB OPEN'
]
},
{
'title': '2. Feature Dissatisfaction (18.0% - 1,547 responses)',
'subtitle': 'Second Major Concern',
'themes': ['Unwanted AI integration (Aria complaints)', 'Feature bloat and unnecessary additions', 'Interface changes without user consent', 'Forced updates and modifications'],
'quotes': [
'If you started overloading it with AI and other bullshit',
'Feature-creep such as Aria. I don\'t want AI in my browser',
'Too many updates... another change after the other',
'If AI features are pushed too hard'
]
},
{
'title': '3. Website Compatibility (14.0% - 1,202 responses)',
'subtitle': 'Critical Functionality Issue',
'themes': ['Banking and financial websites', 'Work-related applications', 'Streaming services (Netflix, YouTube)', 'Site-specific functionality problems'],
'quotes': [
'Some websites don\'t work well with Opera',
'Opera is not supported by the bank I use',
'Many times when I have sign into a site, it will not accept my password using Opera',
'About half the time I can not use Netflix with Opera'
]
},
{
'title': '4. Browser Loyalty/Satisfaction (12.0% - 1,030 responses)',
'subtitle': 'Positive Retention Signal',
'themes': ['Strong user loyalty', 'Complete satisfaction with Opera', 'No intention to switch', 'Long-term Opera users'],
'quotes': [
'none i love opera and i wont ever switch to another browser',
'There is no reason for that, Opera is completely sufficient for me',
'I wouldn\'t. I have been using Opera as my default browser for over 10 years',
'Opera is better i will never switch'
]
},
{
'title': '5. Security & Privacy Concerns (8.0% - 687 responses)',
'subtitle': 'Growing User Awareness',
'themes': ['Data protection and privacy policies', 'User tracking concerns', 'Data breach vulnerabilities', 'Corporate data handling'],
'quotes': [
'Security, confidentiality, not having anything to do with USA',
'If my information/data gets missused i´ll change my browser',
'Never say never. Security and data breaches stuff',
'More commitment to privacy, more customizability to that end'
]
}
]
# Add the top 5 reasons with full detail
for reason in reasons_data:
doc.add_heading(reason['title'], level=2)
# Add subtitle
subtitle_para = doc.add_paragraph(reason['subtitle'])
subtitle_para.bold = True
# Add themes
doc.add_paragraph('Core Themes:', style='Heading 3')
for theme in reason['themes']:
doc.add_paragraph(theme, style='List Bullet')
# Add quotes
doc.add_paragraph('Representative User Quotes:', style='Heading 3')
for quote in reason['quotes']:
quote_para = doc.add_paragraph(f'"{quote}"', style='Quote')
# Add remaining reasons (6-10) in summary format
remaining_reasons = [
('6. Ad Blocking Issues (6.0% - 515 responses)', 'YouTube ad blocking effectiveness, general popup blocking, adblocker functionality degradation'),
('7. Competition Factors (5.0% - 429 responses)', 'Superior features in competing browsers, better alternatives available, innovation gaps'),
('8. Technical Issues (4.0% - 343 responses)', 'Browser crashes and instability, update-related problems, synchronization issues'),
('9. Translation Features (2.8% - 240 responses)', 'Lack of automatic page translation, need for built-in translation tools'),
('10. UI/UX Concerns (2.4% - 206 responses)', 'Unwanted interface changes, limited customization options, usability regressions')
]
for title, description in remaining_reasons:
doc.add_heading(title, level=2)
doc.add_paragraph(description)
# Critical Business Insights
doc.add_heading('Critical Business Insights', level=1)
doc.add_heading('Immediate Action Required (High Risk)', level=2)
high_risk_items = [
'Memory/RAM Optimization - 26.7% of users cite this as a switch factor',
'CPU Performance - Directly impacts daily user experience',
'Banking Website Compatibility - Business-critical functionality',
'AI Feature Opt-out - 18% demand user autonomy over AI features'
]
for item in high_risk_items:
doc.add_paragraph(item, style='List Bullet')
doc.add_heading('Positive Market Signals', level=2)
positive_items = [
'12% Loyal User Base - Strong retention foundation',
'Global Reach - Successfully serving diverse international markets',
'Feature Innovation - When implemented well, features are appreciated'
]
for item in positive_items:
doc.add_paragraph(item, style='List Bullet')
doc.add_heading('Strategic Risk Areas', level=2)
risk_items = [
'Forced AI Integration - Could alienate 18% of user base',
'Performance Degradation - Affects over 1 in 4 users',
'Website Compatibility - Impacts daily workflow for 14% of users',
'Update Fatigue - Users frustrated with frequent, unwanted changes'
]
for item in risk_items:
doc.add_paragraph(item, style='List Bullet')
# Strategic Recommendations
doc.add_heading('Strategic Recommendations', level=1)
recommendations = [
('Priority 1: Performance Optimization', [
'RAM Management: Implement aggressive memory optimization',
'CPU Efficiency: Reduce background processing overhead',
'Memory Leak Prevention: Fix progressive slowdown issues',
'Resource Monitoring: Provide users with built-in resource usage controls'
]),
('Priority 2: User Choice & Control', [
'Optional AI Features: Make all AI functionality truly optional',
'Update Control: Give users more control over update timing and features',
'Interface Stability: Avoid forced UI changes without user consent',
'Customization Options: Expand user control over browser appearance and behavior'
]),
('Priority 3: Compatibility Improvements', [
'Banking Sites: Priority focus on financial institution compatibility',
'Work Applications: Ensure business-critical site functionality',
'Streaming Services: Maintain compatibility with major platforms',
'Cross-platform Consistency: Improve feature parity across devices'
]),
('Priority 4: Communication & Transparency', [
'Update Benefits: Clearly communicate value of updates to users',
'Privacy Policies: Transparent data handling practices',
'Feature Announcements: Better communication about new features and opt-out options',
'User Feedback: Implement more responsive feedback collection and action'
])
]
for title, items in recommendations:
doc.add_heading(title, level=2)
for item in items:
doc.add_paragraph(item, style='List Bullet')
# Conclusion
doc.add_heading('Conclusion', level=1)
conclusion_text = """The analysis reveals that while Opera has a strong loyal user base (12%), significant performance and feature concerns affect over 44% of users combined. The primary threats to user retention are performance issues (26.7%) and unwanted feature additions (18.0%).
Key Success Factors:
• Prioritize performance optimization above new features
• Respect user choice regarding AI and new functionality
• Maintain and improve website compatibility
• Preserve what users love while fixing what frustrates them
Market Position:
Opera's differentiation through features like VPN, workspaces, and sidebar tools creates strong user loyalty, but this advantage is being eroded by performance issues and forced feature adoption. Addressing these core concerns while maintaining innovation will be critical for long-term user retention and growth."""
doc.add_paragraph(conclusion_text)
# Add footer information
doc.add_page_break()
footer_para = doc.add_paragraph('Analysis Date: December 2024')
footer_para.add_run('\nTotal Responses: 8,592')
footer_para.add_run('\nMethodology: Comprehensive semantic clustering and thematic analysis')
footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
# Save the document
doc.save('Opera_Browser_Switch_Analysis_Summary.docx')
print("DOCX document created successfully: Opera_Browser_Switch_Analysis_Summary.docx")
if __name__ == "__main__":
create_opera_analysis_docx()