portfolio / app.py
sreelekhaputta2's picture
Update app.py
eb856be verified
import gradio as gr
import plotly.graph_objects as go
class Portfolio:
def __init__(self):
self.profile = {
"name": "Sreelekha Putta",
"title": "AI/Prompt Engineer & Project Manager Aspirant",
"location": "Hyderabad, Telangana",
"phone": "9014347717",
"email": "sreelekhaputta2@gmail.com",
"cgpa": "8.0",
"linkedin": "https://www.linkedin.com/in/sreelekha-putta-61b22b262",
"huggingface": "https://huggingface.co/sreelekhaputta2"
}
self.about = """
Hi, I'm <strong style="color: #FFA500;">Sreelekha</strong>, a passionate <strong>AI/ML enthusiast, innovator, and problem solver</strong>
currently in my final year of B.Tech. My journey blends technical skills with creativityβ€”I love building AI-powered tools that
make life simpler, meaningful, and even spiritual.
<br><br>
I've worked as an <strong style="color: #FFC069;">AI Intern at Spectov</strong> and an <strong style="color: #FFC069;">AI Tools Expert Intern at Website Makers</strong>,
gaining hands-on experience in <strong>Generative AI, NLP, and Machine Learning applications</strong>. Alongside, I've developed unique projects like:
<br><br>
β€’ <strong style="color: #87CEEB;">Idealyze</strong> – an AI startup validator with 85% accuracy<br>
β€’ <strong style="color: #87CEEB;">WiseVerse</strong> – a Bhagavad Gita-based AI chatbot with 95% accuracy<br>
β€’ <strong style="color: #87CEEB;">DivineLoop</strong> and <strong style="color: #87CEEB;">AvatarVerse</strong> – creative AI solutions<br>
β€’ <strong style="color: #87CEEB;">GenDoc AI</strong> – an AI-driven code documentation tool
<br><br>
With an <strong style="color: #FFA500;">8.0 CGPA</strong> and a strong foundation in <strong>Python, ML, Deep Learning, and AI frameworks</strong>,
I aim to grow into an <strong>AI Project Manager & Generative AI Engineer</strong>, bridging technology with real-world impact.
<br><br>
Outside of tech, I find peace in spirituality and creativityβ€”I'm deeply inspired by the teachings of Lord Krishna,
which guide my mindset toward resilience and growth.
<br><br>
<strong style="color: #FFD700;">My goal:</strong> To <strong>shape the future of AI</strong> while making technology more
<strong>human-centered, ethical, and impactful</strong>.
"""
self.projects = [
{"name": "WiseVerse – Bhagavad Gita Chatbot", "desc": "AI chatbot with 95% accuracy, multi-language support, 40% higher engagement", "tech": ["NLP", "Hugging Face", "Python"], "link": "https://huggingface.co/spaces/sreelekhaputta2/Chatbot"},
{"name": "Idealyze – AI Startup Validator", "desc": "85% prediction accuracy, 50% faster decision-making, market analysis integration", "tech": ["ML", "Big Data", "Flask"], "link": "https://huggingface.co/spaces/sreelekhaputta2/Idealyze"},
{"name": "DivineLoop", "desc": "Spiritual AI companion combining ancient wisdom with modern technology", "tech": ["AI", "NLP", "Transformers"], "link": "https://huggingface.co/spaces/sreelekhaputta2/DivineLoop"},
{"name": "AvatarVerse", "desc": "AI-generated avatars platform for virtual identity creation", "tech": ["Computer Vision", "Generative AI"], "link": "https://huggingface.co/spaces/sreelekhaputta2/AvatarVerse"},
{"name": "GenDoc AI", "desc": "AI-powered code documentation tool", "tech": ["Code Analysis", "NLP"], "link": "https://huggingface.co/spaces/sreelekhaputta2/GenDoc_AI"}
]
self.experience = [
{"role": "AI Intern", "company": "Spectov", "duration": "Jan 2025 – July 2025",
"achievements": ["AI content automation reducing manual work by 30%", "Custom prompt systems achieving 20% higher CTR", "100% client-ready solutions aligned with business needs"]},
{"role": "AI Tools Expert Intern", "company": "Website Makers", "duration": "Dec 2024 – May 2025",
"achievements": ["WiseVerse chatbot with 95% accuracy, 40% engagement boost", "Idealyze validator with 85% accuracy, 50% better decisions", "AI tools & prompt engineering boosting efficiency by 35%"]}
]
def create_css(self):
# Forces off-white text and contrast for all themes/modes.
return """
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
*, *::before, *::after {
color: #F4F4F9 !important;
text-shadow: none !important;
box-sizing: border-box;
}
/* Background always visible */
body, .gradio-container {
font-family: 'Inter', sans-serif !important;
background: url('https://www.alldesigncreative.com/wp-content/uploads/2019/09/new-glitter-particles-black-screen-background-video-effect.png') no-repeat center center fixed !important;
background-size: cover !important;
color: #F4F4F9 !important;
margin: 0; padding: 0;
}
/* Always use readable cards */
.profile-header,
.card,
.project-card,
.stat-box,
.tech-tag,
.badge {
color: #F4F4F9 !important;
background: rgba(30,30,40,0.90) !important;
border-radius: 12px; border: none;
}
.profile-name { font-size: 2.5rem; font-weight: 700; color: #FFD700 !important;}
.profile-img {
width: 180px; height: 180px; border-radius: 50%;
border: 5px solid #a1c5ff; object-fit: cover;
box-shadow: 0 8px 20px rgba(0,0,0,0.5);
display: block; margin: 0 auto;
}
.badge {
background: rgba(255,255,255,0.16); padding: 8px 16px;
border-radius: 20px; display: inline-block; margin: 5px;
color: #F4F4F9 !important;
font-weight: 600;
}
.card-title {
color: #FFA500 !important;
font-size: 1.4rem;
font-weight: 700;
}
.project-card { border: 1px solid rgba(255,200,100,0.25); margin: 10px 0;}
.btn-primary {
background: linear-gradient(45deg, #FFA500, #FF6B6B);
color: #F4F4F9 !important; padding: 10px 20px; border-radius: 20px;
text-decoration: none; font-weight: 700; display: inline-block;
box-shadow: 1px 1px 6px rgba(255,107,107,0.65);
}
.btn-primary:hover {
background: linear-gradient(45deg, #FFB733, #FF4B4B);
color: #fff !important;
}
.tech-tag {
background: rgba(135,206,235,0.22);
color: #F4F4F9 !important;
padding: 3px 8px;
border-radius: 8px;
font-size: 0.78rem;
display: inline-block;
margin: 2px;
font-weight: 600;
}
/* Mobile force off-white */
@media (max-width: 700px) {
body, .gradio-container, .badge, .card, .card-title, .project-card, .stat-box, .tech-tag, .btn-primary, .profile-header, * {
color: #F4F4F9 !important;
text-shadow: none !important;
background: rgba(30,30,40,0.90) !important;
}
.btn-primary, .badge { color: #ffd700 !important; }
}
</style>
"""
def create_header(self):
return f"""
{self.create_css()}
<div class="profile-header">
<div style="display: flex; align-items: center; gap: 30px; flex-wrap: wrap; justify-content: center;">
<div style="flex: 1; min-width: 300px; text-align: center;">
<h1 class="profile-name">{self.profile['name']}</h1>
<p style="font-size: 1.3rem; margin-bottom: 15px; color: #FFD700;">{self.profile['title']}</p>
<div>
<span class="badge">πŸ“ {self.profile['location']}</span>
<span class="badge">πŸ“ž {self.profile['phone']}</span>
<span class="badge">βœ‰ {self.profile['email']}</span>
</div>
<div style="margin-top: 15px;">
<span class="badge">πŸŽ“ B.Tech IT(AI/ML) | CGPA: {self.profile['cgpa']}</span>
</div>
</div>
</div>
</div>
"""
def create_about(self):
return f"""
<div class="card">
<h2 class="card-title">πŸ‘€ About Me</h2>
<p style="line-height: 1.8; font-size: 1.05rem;">
{self.about}
</p>
</div>
"""
def create_skills_chart(self):
categories = ['Python', 'AI/ML', 'NLP', 'Deep Learning', 'Backend', 'Leadership', 'Communication', 'Problem Solving']
values = [95, 90, 85, 82, 80, 88, 90, 92]
fig = go.Figure()
fig.add_trace(go.Scatterpolar(
r=values + [values[0]], theta=categories + [categories[0]],
fill='toself', fillcolor='rgba(255, 165, 0, 0.3)',
line_color='#FFA500', line_width=2, marker=dict(size=6, color='#FF6B6B')
))
fig.update_layout(
polar=dict(
radialaxis=dict(visible=True, range=[0, 100], tickfont=dict(color='#FFD700'), gridcolor='rgba(255,255,255,0.22)'),
angularaxis=dict(tickfont=dict(color='#FFD700'), gridcolor='rgba(255,255,255,0.22)')
),
paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)',
title=dict(text="Technical & Soft Skills", font=dict(size=18, color='#FFA500')),
width=600, height=500, showlegend=False
)
return fig
def create_metrics_chart(self):
metrics = ['WiseVerse', 'Idealyze', 'User Engagement', 'Efficiency Boost']
values = [95, 85, 40, 35]
fig = go.Figure(data=[go.Bar(
x=metrics, y=values,
marker_color=['#FFA500', '#FF6B6B', '#00FF87', '#87CEEB'],
text=[f'{v}%' for v in values], textposition='auto',
textfont=dict(color='#FFD700')
)])
fig.update_layout(
title=dict(text="Key Project Metrics", font=dict(size=18, color='#FFA500')),
xaxis=dict(title="Projects/Metrics", tickfont=dict(color='#FFD700'), gridcolor='rgba(255,255,255,0.14)'),
yaxis=dict(title="Percentage", tickfont=dict(color='#FFD700'), gridcolor='rgba(255,255,255,0.14)'),
paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)',
width=600, height=400
)
return fig
def create_interface():
portfolio = Portfolio()
css = """
.gradio-container { background: linear-gradient(135deg, #0f0f0f, #1a1a1a) !important; }
.gr-button { background: linear-gradient(45deg, #FFA500, #FF6B6B) !important; color: #F4F4F9 !important; }
"""
with gr.Blocks(css=css, title="Sreelekha Putta - AI Engineer Portfolio") as demo:
with gr.Row():
with gr.Column(scale=1):
profile_img = gr.Image(
value="profile.jpg",
label="Profile Picture",
show_label=False,
height=200,
width=200,
type="filepath",
container=True,
elem_classes=["profile-image-container"]
)
gr.HTML(portfolio.create_header())
with gr.Tabs():
with gr.Tab("πŸ‘€ About"):
gr.HTML(portfolio.create_about())
with gr.Row():
gr.HTML("""
<div class="card">
<h2 class="card-title">πŸŽ“ Education</h2>
<div style="background: rgba(255,165,0,0.14); padding: 15px; border-radius: 10px;">
<h3 style="color: #FFD700;">B.Tech in Information Technology(AI/ML Specialization)</h3>
<p style="color: #F4F4F9;">JNTUH College of Engineering Jagitial</p>
<p style="color: #FFD700;">2022 – 2026 | CGPA: 8.0</p>
</div>
</div>
""")
with gr.Tab("πŸ’Ό Experience"):
exp_html = '<div class="card"><h2 class="card-title">Professional Experience</h2>'
for exp in portfolio.experience:
exp_html += f"""
<div class="project-card">
<h3 style="color: #FFD700;">{exp['role']}</h3>
<p style="color: #F4F4F9;">{exp['company']} | {exp['duration']}</p>
<ul style="color: #F4F4F9; margin-top: 10px;">
"""
for ach in exp['achievements']:
exp_html += f'<li style="margin: 5px 0;">⚑ {ach}</li>'
exp_html += '</ul></div>'
exp_html += '</div>'
gr.HTML(exp_html)
gr.Plot(portfolio.create_metrics_chart())
with gr.Tab("πŸš€ Projects"):
proj_html = '<div class="card"><h2 class="card-title">Featured Projects</h2>'
for proj in portfolio.projects:
tags = ''.join([f'<span class="tech-tag">{t}</span>' for t in proj['tech']])
proj_html += f"""
<div class="project-card">
<h3 style="color: #FFD700; margin-bottom: 10px;">{proj['name']}</h3>
<p style="color: #F4F4F9; margin-bottom: 10px;">{proj['desc']}</p>
<div style="margin-bottom: 10px;">{tags}</div>
<a href="{proj['link']}" target="_blank" class="btn-primary">View Project β†’</a>
</div>
"""
proj_html += '</div>'
gr.HTML(proj_html)
with gr.Tab("⚑ Skills"):
with gr.Row():
with gr.Column():
gr.Plot(portfolio.create_skills_chart())
with gr.Column():
gr.HTML("""
<div class="card">
<h2 class="card-title">Technical Skills</h2>
<p style="color: #F4F4F9; line-height: 2;">
<strong style="color: #FFD700;">Programming:</strong> Python, C, Java, SQL<br>
<strong style="color: #FFD700;">AI/ML:</strong> Machine Learning, Deep Learning, NLP, Generative AI, LLMs<br>
<strong style="color: #FFD700;">Frameworks:</strong> TensorFlow, PyTorch, Hugging Face, Flask<br>
<strong style="color: #FFD700;">Tools:</strong> Git/GitHub, NumPy, Pandas, Matplotlib, Seaborn<br>
<strong style="color: #FFD700;">Specialization:</strong> Prompt Engineering, Full-stack AI Deployment
</p>
<h2 class="card-title" style="margin-top: 20px;">Soft Skills</h2>
<p style="color: #F4F4F9; line-height: 2;">
β€’ <strong style="color: #00FF87;">Leadership</strong> – Led Cultural Night 2025 (1000+ audience)<br>
β€’ <strong style="color: #00FF87;">Communication</strong> – Exceptional presentation & public speaking<br>
β€’ <strong style="color: #00FF87;">Problem Solving</strong> – Creative AI solution design<br>
β€’ <strong style="color: #00FF87;">Team Collaboration</strong> – Cross-functional project delivery<br>
β€’ <strong style="color: #00FF87;">Project Management</strong> – Planning & execution excellence
</p>
</div>
""")
with gr.Tab("πŸ† Achievements"):
gr.HTML("""
<div class="card">
<h2 class="card-title">Key Achievements</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px;">
<div class="stat-box">
<div class="stat-number">πŸ… Top Intern</div>
<p style="margin-top: 8px;">Recognized for AI innovation at Website Makers (2025)</p>
</div>
<div class="stat-box">
<div class="stat-number">🎀 1000+</div>
<p style="margin-top: 8px;">Hosted Cultural Night 2025 at JNTUH</p>
</div>
<div class="stat-box">
<div class="stat-number">πŸš€ 5+ Apps</div>
<p style="margin-top: 8px;">Deployed on Hugging Face Spaces</p>
</div>
</div>
</div>
""")
with gr.Tab("πŸ“ž Connect"):
with gr.Row():
with gr.Column():
gr.HTML(f"""
<div class="card">
<h2 class="card-title">Let's Connect</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin: 20px 0;">
<a href="{portfolio.profile['huggingface']}" target="_blank" class="btn-primary" style="text-align: center;">
πŸ€— HuggingFace
</a>
<a href="{portfolio.profile['linkedin']}" target="_blank" class="btn-primary" style="text-align: center;">
πŸ’Ό LinkedIn
</a>
<a href="mailto:{portfolio.profile['email']}" class="btn-primary" style="text-align: center;">
βœ‰ Email
</a>
</div>
<p style="color: #FFA500; font-size: 1.2rem; text-align: center; font-style: italic; margin-top: 20px;">
"Building AI with consciousness, creating technology with soul"
</p>
</div>
""")
with gr.Column():
gr.HTML("""
<div class="card">
<h2 class="card-title">πŸ“„ Download Resume</h2>
<p style="margin-bottom: 15px;">
Get my complete resume with detailed project information and achievements.
</p>
</div>
""")
resume_file = gr.File(label="Resume", value="resume_sreelekha_putta.pdf", interactive=False)
return demo
if __name__ == "__main__":
demo = create_interface()
print("πŸš€ Launching Sreelekha Putta's Portfolio with improved white text everywhere...")
demo.launch()