| 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() |
|
|
|
|