File size: 21,817 Bytes
769aa5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5c687f3
330d5fc
769aa5e
10a4924
769aa5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10a4924
769aa5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dda3ce3
 
 
73ae154
dda3ce3
 
 
 
 
 
 
769aa5e
 
 
 
 
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
dda3ce3
769aa5e
dda3ce3
 
 
 
 
 
 
 
 
 
 
769aa5e
dda3ce3
3084231
dda3ce3
81be91d
dda3ce3
 
 
 
 
81be91d
dda3ce3
 
 
 
 
81be91d
dda3ce3
73ae154
dda3ce3
d5974e4
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
 
 
5c687f3
dda3ce3
5c687f3
dda3ce3
 
 
 
 
 
 
 
 
 
 
 
 
769aa5e
07c4a28
 
 
 
e2bfee1
07c4a28
e2bfee1
 
 
 
07c4a28
 
 
 
38332c9
 
07c4a28
 
e2bfee1
 
 
 
 
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
38332c9
 
07c4a28
 
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
38332c9
e2bfee1
07c4a28
e2bfee1
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38332c9
e2bfee1
07c4a28
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
 
 
 
 
 
38332c9
e2bfee1
07c4a28
 
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
38332c9
 
07c4a28
 
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
07c4a28
e2bfee1
 
 
 
 
 
 
 
 
 
 
 
 
 
769aa5e
 
 
 
73ae154
 
 
769aa5e
 
 
 
9c97ffe
769aa5e
9c97ffe
 
 
 
769aa5e
 
9c97ffe
 
 
 
 
769aa5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75e7862
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
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522

import streamlit as st
from PIL import Image
from streamlit_lottie import st_lottie
import json
from streamlit_option_menu import option_menu  # Import the option_menu

#setting layout to wide
st.set_page_config(layout="wide")
# Load CSS for styling with a minimalist grey background
with open("style.css") as f:
    css_content = f.read()
    css_content += '''
    body {
        background-color: #f0f2f6;
    }
    '''
    st.markdown('<style>{}</style>'.format(css_content), unsafe_allow_html=True)

def load_lottiefile(filepath: str):
    with open(filepath, "r") as file:
        return json.load(file)

def display_header():
    st.write('''
    # Nihar Palem
    ##### 
    ''')
    # Assuming you have a Lottie animation to display
    lottie_animation = load_lottiefile("bio.json")
    st_lottie(lottie_animation, height=300, key="header_animation")

def display_summary():
    #st.markdown('## Summary', unsafe_allow_html=True)
    st.markdown("""Hello! This is Nihar Palem. I'm originally from Hyderabad and currently residing in the Silicon Valley Bay Area, San Jose. I'm a Graduate with Master's degree in Data Analytics (Applied Data Science) from San Jose State University. In this portfolio, you can explore my academic background, work experience, and projects in the data science field. You'll also find links to my skills, other hobbies, and certifications.""")    

def display_education():
    st.markdown('## Education')
    st.write("""
    - **Masters In Data Analytics**, *San Jose State University*, USA (2023-2024)
      - Courses: Data Mining, Deep Learning, Big Data Technologies, Data Visualization, Machine Learning, Database Management Systems
      - Achievements: 
        - A Grade in Deep Learning
        - Instructional Student Assistant (ISA)
          - Mentored 80+ students on technical aspects of data modeling projects, guiding them through comprehensive project report writing and adhering to proper grading formats.
          - Reviewed and provided feedback on data pipeline demonstrations, ensuring quality and best practices, while offering expert advice on resolving complex technical issues related to data analysis and machine learning models.
    
    - **Bachelor of Technology (B.Tech) in Electrical and Electronics Engineering (EEE)**, *Sreenidhi Institute of Science and Technology (SNIST)*, Hyderabad (2015-2019)
      - Activities: 
        - Memeber of the Robotics Club:, built line follower and theft-alert detection bots.
        - Member of the college cricket team; won the Hyderabad zone-level tournament
    """)
def display_work_experience():
    st.markdown('## Work Experience')
    st.write("""
    **Bharat Electronics Limited, Hyderabad**
    February 2021 - March 2022
    - **Data Analyst**
      - Optimized complex SQL queries for multi-million row datasets, boosting performance by 40% and accelerating reporting capabilities.
      - Engineered robust Python scripts with Pandas for large-scale data extraction and analysis from SQL Server.
      - Designed and implemented interactive dashboards using Matplotlib and Seaborn, delivering real-time insights into key business indicators and financial metrics, enhancing strategic decision-making and streamlining centralized government reporting.
      - Automated monthly processes and improved data quality by implementing SQL stored procedures and triggers, resulting in a 30% reduction in data entry errors and a 40% decrease in routine reporting time.

    **Technical Writer**
    2023-Present
    - Embarked on a new journey in 2023 as a technical writer, sharing insights and developments in data science and data engineering with a growing audience.
    - Authored numerous articles that explore complex topics in an accessible and informative manner, focusing on data science, machine learning, bioinformatics, and data engineering.
    - This new habit aims to educate and inspire, bridging the gap between technical expertise and practical application in the modern data landscape.
    - Find my work on [Medium](https://medium.com/@nihar-palem) and [Substack](https://niharpalem.substack.com/publish/posts).
    """)

def display_projects():
    st.title('My Projects')

    # Define tab titles
    tab_titles = [
        "Resume & CV Crafter",
        "Multi-Agent Job Search",
        "Resume Easz",
        "Job Easz",
        "Bitcoin Lightning Optimization",
        "National Infrastructure Monitoring",
        "Stock Market Analysis",
        "Twitter Trend Analysis",
        "Restaurant Recommendation",
        "ASL Translator",
        "Squat Easy"
    ]

    # Create tabs
    tabs = st.tabs(tab_titles)

    # Add content to each tab
    with tabs[0]:
        st.header("LLM-powered Resume & CV Crafter")
        st.markdown("""
        - **Description**: Developed AI platform combining LLaMA-3 70B and Deepseek R1 with low-temperature settings for stable, tailored resume and CV generation
        - **Key Features**:
            • Smart Matching Algorithm analyzing profiles against job requirements
            • LaTeX-Powered Resumes with professional formatting
            • Automated 4-paragraph Cover Letter Generation
            • Performance Metrics evaluating match quality
        - **Technical Achievements**:
            • Implemented dual-agent architecture: LLaMA-3 8B for profile analysis and 70B for LaTeX generation
            • Engineered JSON schema validation system for error-free template integration
            • Achieved 5,000+ LinkedIn impressions with 80% reduction in creation time
        - **Technologies**: Streamlit, GROQ API (LLaMA-3 70B), LaTeX, JSON Schema
        - **Reference**: [Link to Project](https://huggingface.co/spaces/Niharmahesh/Resume_and_CV_crafter)
        """)

    with tabs[1]:
        st.header("Multi-Agent Job Search System")
        st.markdown("""
        - **Description**: Built an AI-powered job search assistant using dual-LLaMA architecture for comprehensive job matching and analysis
        - **Key Features**:
            • Real-time scraping across LinkedIn, Glassdoor, Indeed, ZipRecruiter
            • Advanced resume parsing and job matching
            • Intelligent compatibility scoring system
        - **Technical Achievements**:
            • Developed batch processing pipeline handling 60+ positions/search
            • Reduced job search time by 80% through accurate matching
            • Implemented specialized agents for input processing, scraping, and analysis
        - **Technologies**: GROQ API, jobspy, Streamlit, Pandas, LLMOps
        - **Reference**: [Link to Project](https://huggingface.co/spaces/Niharmahesh/Multi_Agent_Job_search_and_match)
        """)

    with tabs[2]:
        st.header("Resume Easz")
        st.markdown("""
        - **Description**: Created an AI-driven resume analysis and enhancement tool using LLaMA 3.3 model
        - **Key Features**:
            • Quick and in-depth resume analysis options
            • Comprehensive skill gap analysis
            • ATS compatibility optimization
            • Multiple output formats (DOCX, HTML, TXT)
        - **Technical Implementation**:
            • Integrated GROQ API for advanced language processing
            • Built visual diff system for resume changes
            • Developed custom prompt engineering pipeline
        - **Technologies**: GROQ API, Streamlit, Python, LLM
        - **Reference**: [Link to Project](https://resume-easz.streamlit.app/)
        """)

    with tabs[3]:
        st.header("Job Easz")
        st.markdown("""
        - **Description**: Engineered comprehensive job aggregation platform for data roles with advanced analytics
        - **Technical Achievements**:
            • Designed Airflow pipeline with exponential backoff retry (120-480s intervals)
            • Optimized concurrent processing reducing runtime from 2h to 40min
            • Processes ~3000 daily job listings across various data roles
        - **Key Features**:
            • Daily updates with comprehensive job role coverage
            • Custom filtering by role and location
            • Interactive dashboard for market trends
            • Automated ETL pipeline
        - **Technologies**: Python, Airflow, ThreadPoolExecutor, Hugging Face Datasets
        - **Reference**: [Link to Project](https://huggingface.co/spaces/Niharmahesh/job_easz)
        """)

    with tabs[4]:
        st.header("Bitcoin Lightning Path Optimization")
        st.markdown("""
        - **Description**: Advanced payment routing optimization system for Bitcoin Lightning Network
        - **Technical Achievements**:
            • Developed ML classifiers achieving 98.77-99.10% accuracy
            • Implemented tri-model consensus system for optimal routing
            • Engineered ensemble models with 0.98 F1-scores
        - **Implementation Details**:
            • Created simulation environment for multi-channel transactions
            • Optimized graph-based algorithms for payment routing
            • Integrated with Lightning payment interceptor
        - **Technologies**: XGBoost, Random Forest, AdaBoost, Graph Algorithms
        """)

    with tabs[5]:
        st.header("National Infrastructure Monitoring")
        st.markdown("""
        - **Description**: Developed satellite imagery analysis system for infrastructure change detection
        - **Technical Achievements**:
            • Fine-tuned ViT+ResNet-101 ensemble on 40GB satellite dataset
            • Achieved 85% accuracy in change detection
            • Implemented 8 parallel GPU threads for enhanced performance
        - **Key Features**:
            • Temporal analysis with 1km resolution
            • Interactive map interface with bounding box selection
            • Automatic image chipping for 256x256 inputs
            • Contrast adjustment optimization
        - **Technologies**: Change ViT Model, Google Earth Engine, PyTorch, Computer Vision
        - **Reference**: [Link to Project](https://huggingface.co/spaces/Niharmahesh/Data298)
        """)

    with tabs[6]:
        st.header("Stock Market Analysis with OpenAI Integration")
        st.markdown("""
        - **Description**: Created comprehensive stock market analysis system with multilingual capabilities
        - **Technical Achievements**:
            • Built Spark streaming pipeline with 30% efficiency improvement
            • Orchestrated Airflow Docker pipeline for Snowflake integration
            • Developed bilingual GPT-3.5 chatbot for SQL query generation
        - **Key Features**:
            • Real-time financial metric calculations
            • Custom indicator generation
            • Multilingual query support
            • Automated data warehousing
        - **Technologies**: PySpark, Apache Airflow, Snowflake, OpenAI GPT-3.5
        """)

    with tabs[7]:
        st.header("Twitter Trend Analysis")
        st.markdown("""
        - **Description**: Engineered comprehensive Twitter analytics platform using GCP services
        - **Technical Achievements**:
            • Developed GCP pipeline processing 40k tweets
            • Achieved 40% efficiency improvement through custom Airflow operators
            • Implemented real-time trend analysis algorithms
        - **Key Features**:
            • Automated ETL workflows
            • Interactive Tableau dashboards
            • Viral metrics tracking
            • Engagement rate calculations
        - **Technologies**: Google Cloud Platform, BigQuery, Apache Airflow, Tableau
        """)

    with tabs[8]:
        st.header("Restaurant Recommendation System")
        st.markdown("""
        - **Description**: Built hybrid recommendation system combining multiple filtering approaches
        - **Technical Achievements**:
            • Created hybrid TF-IDF and SVD-based filtering system
            • Achieved 43% improvement in recommendation relevance
            • Reduced computation time by 65%
        - **Key Features**:
            • Location-based suggestions
            • Personalized recommendations
            • Interactive web interface
            • Efficient matrix factorization
        - **Technologies**: Collaborative Filtering, Content-Based Filtering, Flask, Folium
        """)

    with tabs[9]:
        st.header("ASL Translator")
        st.markdown("""
        - **Description**: Developed real-time American Sign Language translation system
        - **Technical Achievements**:
            • Achieved 95% accuracy in real-time gesture interpretation
            • Implemented adaptive hand skeleton GIF generator
            • Optimized MediaPipe integration for point detection
        - **Key Features**:
            • Real-time hand tracking
            • Visual feedback system
            • Intuitive gesture recognition
            • Accessible interface
        - **Technologies**: MediaPipe Hand Detection, Random Forest, Hugging Face Platform
        - **Reference**: [Link to Project](https://huggingface.co/spaces/Niharmahesh/slr-easz)
        """)

    with tabs[10]:
        st.header("Squat Easy")
        st.markdown("""
        - **Description**: Developed deep learning system for squat form analysis and error detection
        - **Technical Achievements**:
            • Engineered custom BiLSTM architecture in PyTorch
            • Achieved 81% training and 75% test accuracy
            • Implemented CUDA-based GPU acceleration
        - **Key Features**:
            • Real-time form analysis
            • Six-type error classification
            • Video processing pipeline
            • Performance optimization
        - **Technologies**: PyTorch, BiLSTM, CUDA, Object-Oriented Programming
        - **Reference**: [Link to Project](https://github.com/niharpalem/squateasy_DL)
        """)
def display_skills():
    st.title('Skills')
    
    # Define tab titles
    tab_titles = [
        "Programming & Core",
        "AI & ML",
        "Data Engineering",
        "Data Architecture",
        "Visualization",
        "Specialized Systems"
    ]
    
    # Create tabs
    tabs = st.tabs(tab_titles)
    
    # Programming & Core Technologies
    with tabs[0]:
        st.header("Programming & Core Technologies")
        st.markdown("""
        - **Programming Languages**:
            • Python (Advanced)
            • SQL (Advanced)
            • Shell Scripting
            
        - **Database Systems**: 
            • Relational: MySQL, PostgreSQL
            • NoSQL: MongoDB
            • Data Warehouses: Snowflake, Redshift
            
        - **Development Tools**:
            • Version Control: Git, GitHub
            • Containerization: Docker
            • IDE: VS Code, PyCharm
            • Microsoft Office Suite
        """)
    
    # AI & Machine Learning
    with tabs[1]:
        st.header("AI & Machine Learning")
        st.markdown("""
        - **Machine Learning Frameworks**: 
            • PyTorch
            • TensorFlow
            • Scikit-Learn
            • XGBoost, Random Forest, AdaBoost
            
        - **Deep Learning**: 
            • Vision Transformers
            • ResNet Architectures
            • Neural Networks
            • BiLSTM
            
        - **LLM & NLP**: 
            • LLaMA-3 (70B/8B)
            • GPT-3.5
            • Sentence Transformers
            • Advanced Prompt Engineering
            • Multi-agent Architectures
            
        - **Computer Vision**: 
            • MediaPipe
            • OpenCV
            • Image Processing Pipelines
        """)
    
    # Data Engineering & Cloud
    with tabs[2]:
        st.header("Data Engineering & Cloud")
        st.markdown("""
        - **Cloud Platforms**: 
            • AWS (Certified)
            • Google Cloud Platform (GCP)
            • Cloud Architecture Design
            
        - **Big Data Technologies**: 
            • Apache Spark (PySpark)
            • Apache Airflow
            • BigQuery
            • Hadoop Ecosystem
            
        - **Data Pipeline Tools**: 
            • ETL/ELT Pipeline Design
            • Workflow Orchestration
            • Concurrent Processing
            • Real-time Data Streaming
            
        - **Infrastructure**:
            • CI/CD Pipelines
            • Infrastructure as Code
            • Kubernetes Basics
        """)
    
    # Data Architecture & Analytics
    with tabs[3]:
        st.header("Data Architecture & Analytics")
        st.markdown("""
        - **Data Modeling**: 
            • OLAP/OLTP Systems
            • Star/Snowflake Schema
            • Data Normalization
            • Database Optimization
            
        - **Analytics Techniques**:
            • Streaming Analytics
            • Batch Processing
            • Time Series Analysis
            • Statistical Analysis
            
        - **Data Processing**: 
            • Pandas, NumPy
            • Data Wrangling
            • Feature Engineering
            • Data Quality Assurance
            
        - **Performance Optimization**:
            • Query Optimization
            • Indexing Strategies
            • Caching Mechanisms
        """)
    
    # Visualization & Deployment
    with tabs[4]:
        st.header("Visualization & Tools")
        st.markdown("""
        - **Business Intelligence**: 
            • Tableau
            • Power BI
            • Dashboard Design
            • KPI Monitoring
            
        - **Technical Visualization**: 
            • Plotly
            • Seaborn
            • Matplotlib
            • Interactive Charts
            
        - **Deployment & Interface**: 
            • Streamlit
            • Flask
            • Web Development
            • API Design
            
        - **Collaboration Tools**: 
            • JIRA
            • Notion
            • Git Workflow
            • Agile Methodologies
        """)
    
    # Specialized Systems
    with tabs[5]:
        st.header("Specialized Systems")
        st.markdown("""
        - **Recommender Systems**: 
            • Hybrid Filtering Techniques
            • Content-Based Filtering
            • Collaborative Filtering
            • Matrix Factorization (SVD)
            
        - **Ensemble Methods**: 
            • Multi-model Consensus Systems
            • Classifier Combinations
            • Voting Systems
            • Stacking Implementations
            
        - **Performance Optimization**: 
            • CUDA Acceleration
            • Parallel Processing
            • Resource Management
            • Scalability Design
            
        - **Custom Solutions**:
            • Natural Language Processing
            • Computer Vision Systems
            • Time Series Forecasting
            • Anomaly Detection
        """)

        
def display_apps():
    st.markdown('## Apps')
    st.markdown("""
- [CNN arch](https://cnn-arch.streamlit.app/)
""")
    st.markdown("""
- [TuNNe](https://huggingface.co/spaces/Niharmahesh/TuNNe)
""")
    
def display_certifications():
    st.markdown('## Certifications')
    
    certifications = [
        {"title": "Python for Data Science and Machine Learning Bootcamp", "issuer": "Udemy", "date": "2023", "skills": "Python, Data Science, Machine Learning"},
        {"title": "HackerRank SQL (Basic)", "issuer": "HackerRank", "date": "2023", "skills": "SQL, Database Management"},
        {"title": "AWS Cloud Practitioner", "issuer": "Udemy", "date": "2023", "skills": "Cloud Computing, AWS Services"},
        {"title": "AWS Certified Cloud Practitioner", "issuer": "Amazon Web Services", "date": "2023", "skills": "Cloud Architecture, AWS Best Practices"}
    ]
    
    for cert in certifications:
        with st.expander(cert["title"]):
            st.write(f"**Issuer:** {cert['issuer']}")
            st.write(f"**Date:** {cert['date']}")
            st.write(f"**Skills:** {cert['skills']}")

def display_social_media():
    st.markdown('## Social Media')
    st.markdown("""
- [LinkedIn](https://www.linkedin.com/in/sai-nihar-1b955a183/)
- [GitHub](https://github.com/niharpalem)
- [Medium](https://medium.com/@nihar-palem)
- [Twitter](https://twitter.com/niharpalem_2497)
- [Email](mailto:[email protected])
""")
menu_items_with_icons = {
    "🎓": display_education,
    "💼": display_work_experience,
    "📁": display_projects,
    "🛠️": display_skills,
    "🌐": display_social_media,
    "🏆": display_certifications,
    "📱": display_apps
}

def main():
    # Initialize session state for selected function
    if 'selected_function' not in st.session_state:
        st.session_state.selected_function = None  # Default to None to not display any section initially

    # Display the header with your name and Lottie animation first
    display_header()
    
    # Display the summary section immediately after the header
    display_summary()

    # Create a row of buttons for each icon in the menu
    cols = st.columns(len(menu_items_with_icons))
    for col, (icon, func) in zip(cols, menu_items_with_icons.items()):
        if col.button(icon):
            # Update the session state to the selected function
            st.session_state.selected_function = func

    # If a function has been selected, call it
    if st.session_state.selected_function is not None:
        st.session_state.selected_function()

if __name__ == "__main__":
    main()