test
Browse files- app.py +129 -75
- requirements.txt +1 -0
app.py
CHANGED
|
@@ -10,6 +10,7 @@ and playable instead of buried in a bullet point.
|
|
| 10 |
|
| 11 |
import gradio as gr
|
| 12 |
import numpy as np
|
|
|
|
| 13 |
import spaces
|
| 14 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 15 |
from sklearn.metrics.pairwise import cosine_similarity
|
|
@@ -87,6 +88,39 @@ EXAMPLE_QUERIES = [
|
|
| 87 |
"What certifications do you have?",
|
| 88 |
]
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
# ---------------------------------------------------------------------------
|
| 91 |
# Styling — dark "console" theme matching the static-site edition
|
| 92 |
# ---------------------------------------------------------------------------
|
|
@@ -154,6 +188,33 @@ CUSTOM_CSS = """
|
|
| 154 |
.gradio-container button:hover {
|
| 155 |
transform: translateY(-2px);
|
| 156 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
"""
|
| 158 |
|
| 159 |
with gr.Blocks(title="Angkit Sarma — Living CV") as demo:
|
|
@@ -192,86 +253,79 @@ with gr.Blocks(title="Angkit Sarma — Living CV") as demo:
|
|
| 192 |
ask_btn.click(fn=ask_the_cv, inputs=[query_box, chatbot], outputs=[chatbot, query_box])
|
| 193 |
query_box.submit(fn=ask_the_cv, inputs=[query_box, chatbot], outputs=[chatbot, query_box])
|
| 194 |
|
| 195 |
-
gr.
|
| 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 |
-
"**Cloud & MLOps:** Microsoft Azure · Azure SQL · Azure Blob · Serverless · Virtual Machines · CI/CD\n\n"
|
| 252 |
-
"**Tools & Practices:** Git · GitHub · Jira · Azure DevOps · Snyk · Wiz · Agile"
|
| 253 |
-
)
|
| 254 |
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
"
|
| 260 |
-
"- Building with the Claude API\n"
|
| 261 |
-
"- Generative AI (Professional Certificate)\n"
|
| 262 |
-
"- AI Fluency: Framework & Foundations\n"
|
| 263 |
-
"- Machine Learning for Leaders\n"
|
| 264 |
-
"- Analyze Box Office Data with Seaborn and Python\n"
|
| 265 |
-
"- 1st Place — Flexday AI Hackathon (INFERA)"
|
| 266 |
)
|
| 267 |
-
|
| 268 |
-
gr.
|
| 269 |
-
|
| 270 |
-
"
|
| 271 |
-
"- Graduated with Distinction — 8.69 CGPA\n"
|
| 272 |
-
"- Full-time AICTE scholarship recipient\n\n"
|
| 273 |
-
"**B.Tech, Computer Science & Engineering** — KIET · 2012–2016\n"
|
| 274 |
-
"- Secured First Division"
|
| 275 |
)
|
| 276 |
|
| 277 |
if __name__ == "__main__":
|
|
|
|
| 10 |
|
| 11 |
import gradio as gr
|
| 12 |
import numpy as np
|
| 13 |
+
import pandas as pd
|
| 14 |
import spaces
|
| 15 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 16 |
from sklearn.metrics.pairwise import cosine_similarity
|
|
|
|
| 88 |
"What certifications do you have?",
|
| 89 |
]
|
| 90 |
|
| 91 |
+
# ---------------------------------------------------------------------------
|
| 92 |
+
# Leaderboard-style tables — sortable, scannable, MTEB-inspired.
|
| 93 |
+
# ---------------------------------------------------------------------------
|
| 94 |
+
SKILLS_DF = pd.DataFrame([
|
| 95 |
+
{"Category": "AI/ML & GenAI", "Skills": "LLMs, Generative AI, Agentic AI, Prompt Engineering, Semantic Search, Classification, Regression, Decision Trees, SMOTE, OCR/NLP"},
|
| 96 |
+
{"Category": "Programming", "Skills": "Python, JavaScript, Node.js"},
|
| 97 |
+
{"Category": "Cloud & MLOps", "Skills": "Microsoft Azure, Azure SQL, Azure Blob, Serverless, Virtual Machines, CI/CD"},
|
| 98 |
+
{"Category": "Tools & Practices", "Skills": "Git, GitHub, Jira, Azure DevOps, Snyk, Wiz, Agile"},
|
| 99 |
+
])
|
| 100 |
+
|
| 101 |
+
IMPACT_DF = pd.DataFrame([
|
| 102 |
+
{"Metric": "Hackathon placement", "Company": "Flexday AI (INFERA)", "Result": "🏆 1st"},
|
| 103 |
+
{"Metric": "Semantic search retrieval improvement", "Company": "Flexday AI", "Result": "+50%"},
|
| 104 |
+
{"Metric": "Infrastructure cost reduction", "Company": "Leokraft", "Result": "-20%"},
|
| 105 |
+
{"Metric": "ML model accuracy improvement", "Company": "Leokraft", "Result": "+8%"},
|
| 106 |
+
{"Metric": "Feature-engineering accuracy gain", "Company": "Leokraft", "Result": "+5%"},
|
| 107 |
+
{"Metric": "Process cycle-time reduction", "Company": "Flexday AI", "Result": "-5%"},
|
| 108 |
+
{"Metric": "Students taught (full-stack web dev)", "Company": "CodingZen", "Result": "100+"},
|
| 109 |
+
])
|
| 110 |
+
|
| 111 |
+
CERTS_DF = pd.DataFrame([
|
| 112 |
+
{"Certification": "Building with the Claude API", "Focus": "LLM application development"},
|
| 113 |
+
{"Certification": "Generative AI (Professional Certificate)", "Focus": "Generative AI fundamentals"},
|
| 114 |
+
{"Certification": "AI Fluency: Framework & Foundations", "Focus": "Applied AI literacy"},
|
| 115 |
+
{"Certification": "Machine Learning for Leaders", "Focus": "ML strategy"},
|
| 116 |
+
{"Certification": "Analyze Box Office Data with Seaborn and Python", "Focus": "Data analysis & visualization"},
|
| 117 |
+
])
|
| 118 |
+
|
| 119 |
+
EDUCATION_DF = pd.DataFrame([
|
| 120 |
+
{"Degree": "M.Tech, Information Technology", "Institution": "Tezpur University", "Years": "2019–2021", "Highlight": "Distinction, 8.69 CGPA, full AICTE scholarship"},
|
| 121 |
+
{"Degree": "B.Tech, Computer Science & Engineering", "Institution": "KIET Group of Institutions", "Years": "2012–2016", "Highlight": "First Division"},
|
| 122 |
+
])
|
| 123 |
+
|
| 124 |
# ---------------------------------------------------------------------------
|
| 125 |
# Styling — dark "console" theme matching the static-site edition
|
| 126 |
# ---------------------------------------------------------------------------
|
|
|
|
| 188 |
.gradio-container button:hover {
|
| 189 |
transform: translateY(-2px);
|
| 190 |
}
|
| 191 |
+
.tabs > .tab-nav {
|
| 192 |
+
border-bottom: 1px solid #2a3040 !important;
|
| 193 |
+
gap: 4px !important;
|
| 194 |
+
}
|
| 195 |
+
.tabs > .tab-nav button {
|
| 196 |
+
font-family: monospace !important;
|
| 197 |
+
font-size: 13px !important;
|
| 198 |
+
color: #9aa3b5 !important;
|
| 199 |
+
border: none !important;
|
| 200 |
+
background: transparent !important;
|
| 201 |
+
padding: 10px 16px !important;
|
| 202 |
+
}
|
| 203 |
+
.tabs > .tab-nav button.selected {
|
| 204 |
+
color: var(--amber) !important;
|
| 205 |
+
border-bottom: 2px solid var(--amber) !important;
|
| 206 |
+
font-weight: 600 !important;
|
| 207 |
+
}
|
| 208 |
+
table {
|
| 209 |
+
font-size: 13.5px !important;
|
| 210 |
+
}
|
| 211 |
+
thead th {
|
| 212 |
+
font-family: monospace !important;
|
| 213 |
+
text-transform: uppercase !important;
|
| 214 |
+
font-size: 11px !important;
|
| 215 |
+
letter-spacing: 0.06em !important;
|
| 216 |
+
color: var(--amber) !important;
|
| 217 |
+
}
|
| 218 |
"""
|
| 219 |
|
| 220 |
with gr.Blocks(title="Angkit Sarma — Living CV") as demo:
|
|
|
|
| 253 |
ask_btn.click(fn=ask_the_cv, inputs=[query_box, chatbot], outputs=[chatbot, query_box])
|
| 254 |
query_box.submit(fn=ask_the_cv, inputs=[query_box, chatbot], outputs=[chatbot, query_box])
|
| 255 |
|
| 256 |
+
with gr.Tabs():
|
| 257 |
+
with gr.Tab("Overview"):
|
| 258 |
+
gr.Markdown(
|
| 259 |
+
"Results-driven AI/ML Engineer with 4+ years designing, training, and deploying machine "
|
| 260 |
+
"learning and generative AI systems that solve real business problems. Proven track record "
|
| 261 |
+
"building agentic AI and LLM-powered applications, optimizing semantic search and NLP "
|
| 262 |
+
"pipelines, and automating end-to-end ML workflows from data processing to production "
|
| 263 |
+
"deployment. Combines strong ML engineering fundamentals with cloud deployment, MLOps, and "
|
| 264 |
+
"application security expertise to ship secure, scalable, high-impact AI solutions."
|
| 265 |
+
)
|
| 266 |
+
gr.HTML('<p class="section-label" style="margin-top:22px;">// impact metrics</p>')
|
| 267 |
+
gr.Dataframe(
|
| 268 |
+
value=IMPACT_DF, interactive=False, wrap=True,
|
| 269 |
+
column_widths=["55%", "25%", "20%"],
|
| 270 |
+
)
|
| 271 |
|
| 272 |
+
with gr.Tab("Experience"):
|
| 273 |
+
with gr.Accordion("Software Developer (AI/ML Focus) — Flexday AI, Hyderabad · Nov 2022 – Present", open=True):
|
| 274 |
+
gr.Markdown(
|
| 275 |
+
"- Built and pitched **INFERA**, an AI-powered agentic solution that maps sales projects "
|
| 276 |
+
"to real-world opportunities — 1st place at the Flexday AI Hackathon\n"
|
| 277 |
+
"- Optimized a semantic search system using LLM/embedding-based techniques, improving "
|
| 278 |
+
"retrieval performance by **50%**\n"
|
| 279 |
+
"- Designed automated, AI-assisted workflows across departments, cutting process cycle "
|
| 280 |
+
"time by 5% and freeing 10+ hours/month\n"
|
| 281 |
+
"- Implemented OCR-based data extraction pipelines across diverse image collections\n"
|
| 282 |
+
"- Identified and remediated critical security vulnerabilities, mitigating million-dollar "
|
| 283 |
+
"risk exposure\n"
|
| 284 |
+
"- Streamlined CI/CD build pipelines using Git, GitHub, Jira, and Azure DevOps"
|
| 285 |
+
)
|
| 286 |
+
with gr.Accordion("Machine Learning Engineer — Leokraft Technologies, Bangalore · Dec 2021 – Dec 2022", open=False):
|
| 287 |
+
gr.Markdown(
|
| 288 |
+
"- Designed, trained, and deployed end-to-end ML models into production, improving "
|
| 289 |
+
"accuracy by **8%** while cutting infrastructure costs by **20%**\n"
|
| 290 |
+
"- Engineered a key target-variable feature that improved model accuracy by 5%\n"
|
| 291 |
+
"- Built an end-to-end application for managing model scores and usage statistics"
|
| 292 |
+
)
|
| 293 |
+
with gr.Accordion("Senior Faculty — CodingZen, Delhi · Jul 2018 – Jul 2019", open=False):
|
| 294 |
+
gr.Markdown(
|
| 295 |
+
"- Taught 100+ students full-stack web development with Node.js\n"
|
| 296 |
+
"- Supervised and mentored a team of teaching staff"
|
| 297 |
+
)
|
| 298 |
|
| 299 |
+
with gr.Tab("Projects"):
|
| 300 |
+
with gr.Row():
|
| 301 |
+
with gr.Column():
|
| 302 |
+
gr.Markdown("**INFERA** — Agentic AI Sales-Opportunity Mapper\n\n*LLMs · AI Agents · Python*\n\nAn AI agent that analyzes sales pipeline data and autonomously maps projects to real-world business opportunities.\n\n🏆 1st Place — Flexday AI Hackathon")
|
| 303 |
+
with gr.Column():
|
| 304 |
+
gr.Markdown("**Analytica** — End-to-End ML Analytics Platform\n\n*React · Python · Azure · SQL*\n\nFull-stack analytics tool surfacing ML model performance metrics and usage statistics.")
|
| 305 |
+
with gr.Column():
|
| 306 |
+
gr.Markdown("**Predictive Allocation** — ML Deployment Pipeline\n\n*Python · Azure SQL · Azure Blob · DevOps*\n\nRe-engineered end-to-end training/deployment pipeline; hardened security with Snyk and Wiz.")
|
| 307 |
+
gr.HTML(
|
| 308 |
+
'<p style="font-family:monospace; font-size:13px; margin-top:10px;">'
|
| 309 |
+
'<a href="https://github.com/angkit-hash" target="_blank" style="color:#4fd1c5; text-decoration:none; border-bottom:1px solid #4fd1c5;">'
|
| 310 |
+
'→ View source & more projects on GitHub</a></p>'
|
| 311 |
+
)
|
| 312 |
|
| 313 |
+
with gr.Tab("Skills"):
|
| 314 |
+
gr.Dataframe(
|
| 315 |
+
value=SKILLS_DF, interactive=False, wrap=True,
|
| 316 |
+
column_widths=["25%", "75%"],
|
| 317 |
+
)
|
|
|
|
|
|
|
|
|
|
| 318 |
|
| 319 |
+
with gr.Tab("Certifications & Education"):
|
| 320 |
+
gr.HTML('<p class="section-label">Certifications</p>')
|
| 321 |
+
gr.Dataframe(
|
| 322 |
+
value=CERTS_DF, interactive=False, wrap=True,
|
| 323 |
+
column_widths=["55%", "45%"],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
)
|
| 325 |
+
gr.HTML('<p class="section-label" style="margin-top:22px;">Education</p>')
|
| 326 |
+
gr.Dataframe(
|
| 327 |
+
value=EDUCATION_DF, interactive=False, wrap=True,
|
| 328 |
+
column_widths=["30%", "28%", "14%", "28%"],
|
|
|
|
|
|
|
|
|
|
|
|
|
| 329 |
)
|
| 330 |
|
| 331 |
if __name__ == "__main__":
|
requirements.txt
CHANGED
|
@@ -2,3 +2,4 @@ gradio==6.20.0
|
|
| 2 |
spaces
|
| 3 |
scikit-learn>=1.3
|
| 4 |
numpy>=1.24
|
|
|
|
|
|
| 2 |
spaces
|
| 3 |
scikit-learn>=1.3
|
| 4 |
numpy>=1.24
|
| 5 |
+
pandas>=2.0
|