|
|
import gradio as gr |
|
|
import os |
|
|
|
|
|
|
|
|
custom_css = """ |
|
|
.gradio-container { |
|
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; |
|
|
} |
|
|
.portfolio-header { |
|
|
text-align: center; |
|
|
padding: 2rem 0; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
color: white; |
|
|
border-radius: 10px; |
|
|
margin-bottom: 2rem; |
|
|
} |
|
|
.section { |
|
|
margin: 2rem 0; |
|
|
padding: 1.5rem; |
|
|
background: #f8f9fa; |
|
|
border-radius: 8px; |
|
|
border-left: 4px solid #667eea; |
|
|
} |
|
|
.skill-tag { |
|
|
display: inline-block; |
|
|
padding: 0.5rem 1rem; |
|
|
margin: 0.3rem; |
|
|
background: #667eea; |
|
|
color: white; |
|
|
border-radius: 20px; |
|
|
font-size: 0.9rem; |
|
|
} |
|
|
.tech-tag { |
|
|
display: inline-block; |
|
|
padding: 0.4rem 0.8rem; |
|
|
margin: 0.2rem; |
|
|
background: #764ba2; |
|
|
color: white; |
|
|
border-radius: 15px; |
|
|
font-size: 0.85rem; |
|
|
} |
|
|
.project-card { |
|
|
padding: 1.5rem; |
|
|
margin: 1rem 0; |
|
|
background: white; |
|
|
border-radius: 8px; |
|
|
box-shadow: 0 2px 8px rgba(0,0,0,0.1); |
|
|
border-top: 3px solid #667eea; |
|
|
} |
|
|
.contact-info { |
|
|
padding: 1.5rem; |
|
|
margin: 1rem 0; |
|
|
background: white; |
|
|
border-radius: 8px; |
|
|
box-shadow: 0 2px 8px rgba(0,0,0,0.1); |
|
|
} |
|
|
.contact-link { |
|
|
color: #667eea; |
|
|
text-decoration: none; |
|
|
font-weight: 500; |
|
|
} |
|
|
.contact-link:hover { |
|
|
color: #764ba2; |
|
|
text-decoration: underline; |
|
|
} |
|
|
.proof-of-work { |
|
|
text-align: center; |
|
|
padding: 2rem; |
|
|
margin: 2rem 0; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
border-radius: 10px; |
|
|
} |
|
|
.proof-of-work-link { |
|
|
font-size: 1.5rem; |
|
|
font-weight: 900; |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
display: inline-block; |
|
|
padding: 1rem 2rem; |
|
|
margin: 0.5rem; |
|
|
background: rgba(255, 255, 255, 0.2); |
|
|
border-radius: 8px; |
|
|
border: 2px solid white; |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.proof-of-work-link:hover { |
|
|
background: rgba(255, 255, 255, 0.3); |
|
|
transform: scale(1.05); |
|
|
text-decoration: none; |
|
|
color: white; |
|
|
} |
|
|
""" |
|
|
|
|
|
def create_portfolio(): |
|
|
profile_image_path = None |
|
|
possible_image_paths = [ |
|
|
"IMG_4098.JPG", "IMG_4098.jpg", "IMG_4098.jpeg", |
|
|
"profile.jpg", "profile.jpeg", "profile.png", |
|
|
"dp.jpg", "dp.jpeg", "dp.png", |
|
|
"portfolio.jpg", "portfolio.jpeg", "portfolio.png" |
|
|
] |
|
|
|
|
|
|
|
|
for path in possible_image_paths: |
|
|
if os.path.exists(path): |
|
|
profile_image_path = path |
|
|
break |
|
|
|
|
|
|
|
|
if not profile_image_path: |
|
|
for file in os.listdir("."): |
|
|
if file.lower().endswith(('.jpg', '.jpeg', '.png', '.gif', '.webp')): |
|
|
profile_image_path = file |
|
|
break |
|
|
|
|
|
if not profile_image_path: |
|
|
profile_image_path = None |
|
|
|
|
|
with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as portfolio: |
|
|
|
|
|
gr.HTML(""" |
|
|
<div class="portfolio-header"> |
|
|
<h1>AI Engineer & Founding Engineer</h1> |
|
|
<p style="font-size: 1.2rem; margin-top: 0.5rem;">Building Production-Ready AI Systems</p> |
|
|
</div> |
|
|
""") |
|
|
|
|
|
with gr.Row(): |
|
|
with gr.Column(scale=1): |
|
|
if profile_image_path: |
|
|
gr.Image(value=profile_image_path, label="Profile Picture", height=300, show_label=True) |
|
|
else: |
|
|
gr.Image(label="Profile Picture", height=300, show_label=True, value=None) |
|
|
|
|
|
with gr.Column(scale=2): |
|
|
|
|
|
gr.Markdown(""" |
|
|
## About Me |
|
|
|
|
|
I am an AI Engineer and Founding Engineer with strong experience in building real-world AI systems end-to-end: from data, model development, infrastructure, to deployment. I specialize in creating production-ready ML pipelines, LLM applications, agent systems, and scalable backend services. |
|
|
|
|
|
I blend machine learning, software engineering, and product thinking to turn ideas into working AI solutions. |
|
|
|
|
|
**Yes, I use AI tools** β for further research, faster debugging, and as a tool to enhance my development workflow and productivity. |
|
|
""") |
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div class="proof-of-work"> |
|
|
<h2 style="color: white; margin-bottom: 1rem;">Proof of Work</h2> |
|
|
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem;"> |
|
|
<a href="https://huggingface.co/nexusbert" class="proof-of-work-link" target="_blank"> |
|
|
View My Work on Hugging Face |
|
|
</a> |
|
|
<a href="https://github.com/neuralnex" class="proof-of-work-link" target="_blank"> |
|
|
View My Work on GitHub |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
""") |
|
|
|
|
|
|
|
|
gr.Markdown(""" |
|
|
## Core Skills |
|
|
""") |
|
|
|
|
|
with gr.Tabs(): |
|
|
with gr.Tab("Machine Learning / Deep Learning"): |
|
|
gr.Markdown(""" |
|
|
- **Model training, fine-tuning & evaluation** |
|
|
- **NLP, CV, Multimodal systems** |
|
|
- **RAG, embeddings** |
|
|
- **Deployment on GPU instances (Huggingface)** |
|
|
- **MLOps (TGI, vLLM, Docker)** |
|
|
""") |
|
|
|
|
|
with gr.Tab("LLM Engineering"): |
|
|
gr.Markdown(""" |
|
|
- **Prompt engineering** |
|
|
- **Agentic workflows** |
|
|
- **Custom tools & function calling** |
|
|
- **Fine-tuning models (LoRA, QLoRA)** |
|
|
- **Building AI assistants & APIs** |
|
|
- **RAG pipelines with structured knowledge** |
|
|
""") |
|
|
|
|
|
with gr.Tab("Software / Backend Engineering"): |
|
|
gr.Markdown(""" |
|
|
- **Node.js (TypeScript), Python** |
|
|
- **FAST APIs** |
|
|
- **Microservices architecture** |
|
|
- **Authentication, payments, dashboards** |
|
|
- **Real-time systems, event queues** |
|
|
""") |
|
|
|
|
|
with gr.Tab("AI Infrastructure"): |
|
|
gr.Markdown(""" |
|
|
- **Docker & containerization** |
|
|
- **TGI / vLLM inference servers** |
|
|
- **Load balancing & scaling** |
|
|
- **On-prem & cloud GPU orchestration** |
|
|
""") |
|
|
|
|
|
|
|
|
gr.Markdown(""" |
|
|
## Technologies I Use |
|
|
""") |
|
|
|
|
|
with gr.Row(): |
|
|
with gr.Column(): |
|
|
gr.Markdown(""" |
|
|
### Languages |
|
|
- **Python** |
|
|
- **TypeScript (Node.js)** |
|
|
""") |
|
|
|
|
|
with gr.Column(): |
|
|
gr.Markdown(""" |
|
|
### Frameworks & Tools |
|
|
- **PyTorch** |
|
|
- **Hugging Face** |
|
|
- **Transformers** |
|
|
- **Gradio** |
|
|
- **FastAPI / Express** |
|
|
- **Docker** |
|
|
- **GitHub Actions** |
|
|
- **Nginx** |
|
|
""") |
|
|
|
|
|
gr.Markdown(""" |
|
|
## Featured Projects |
|
|
""") |
|
|
|
|
|
with gr.Column(): |
|
|
|
|
|
with gr.Group(): |
|
|
gr.Markdown(""" |
|
|
### Zurri β AI Agent Marketplace & Model Proxy |
|
|
|
|
|
**Role:** Founding Engineer |
|
|
**Tech Stack:** Node.js, TypeScript, Docker, TGI, HuggingFace models |
|
|
|
|
|
**Highlights:** |
|
|
- Built scalable API proxy for creators to sell AI models/agents |
|
|
- Integration with Stripe & Flutterwave |
|
|
- Dynamic UI rendering for purchased agents |
|
|
- Backend architecture and optimization |
|
|
- Model access rate-limiting, security, and analytics |
|
|
""") |
|
|
|
|
|
|
|
|
with gr.Group(): |
|
|
gr.Markdown(""" |
|
|
### Think Inclusion β AI Sign Language + Speech Translator |
|
|
|
|
|
**Role:** Architecture Designer |
|
|
**Status:** Model in production |
|
|
**Tech Stack:** Deep learning, computer vision, transformers |
|
|
|
|
|
**Highlights:** |
|
|
- Real-time translation of sign language + speech |
|
|
- Multimodal pipeline design |
|
|
- Optimized for speed and accuracy |
|
|
""") |
|
|
|
|
|
|
|
|
with gr.Group(): |
|
|
gr.Markdown(""" |
|
|
### AI Agriculture Intelligence System |
|
|
|
|
|
**Role:** STT/TTS engineer |
|
|
**Models Used:** |
|
|
- NCAIR models |
|
|
- Yarngpt |
|
|
- Multi-model ecosystem |
|
|
""") |
|
|
|
|
|
|
|
|
gr.Markdown(""" |
|
|
## Contact Me |
|
|
""") |
|
|
|
|
|
gr.HTML(""" |
|
|
<div class="contact-info"> |
|
|
<p style="font-size: 1.1rem; margin-bottom: 1rem;"> |
|
|
<strong>π§ Email:</strong> |
|
|
<a href="mailto:omezirizion@gmail.com" class="contact-link">omezirizion@gmail.com</a> |
|
|
</p> |
|
|
<p style="font-size: 1.1rem; margin-bottom: 1rem;"> |
|
|
<strong>π Phone:</strong> |
|
|
<a href="tel:+2347052284817" class="contact-link">+2347052284817</a> |
|
|
</p> |
|
|
<p style="font-size: 1.1rem; margin-bottom: 0;"> |
|
|
<strong>π¬ WhatsApp:</strong> |
|
|
<a href="https://wa.me/2349123809756" class="contact-link" target="_blank">09123809756</a> |
|
|
</p> |
|
|
</div> |
|
|
""") |
|
|
|
|
|
|
|
|
gr.Markdown(""" |
|
|
--- |
|
|
<div style="text-align: center; padding: 2rem; color: #666;"> |
|
|
<p>Built with Gradio</p> |
|
|
</div> |
|
|
""") |
|
|
|
|
|
return portfolio |
|
|
|
|
|
if __name__ == "__main__": |
|
|
portfolio = create_portfolio() |
|
|
portfolio.launch() |
|
|
|
|
|
|