Suraj Paliwal

QA Engineer
4years in QA
5repositories checked by code analysis
5projects
MiddleAI/ML Engineer

Overview

A Middle-level Python ML/GenAI engineer focused on lightweight RAG chat applications and embedding-based search. The strongest proven skill is building end-to-end RAG prototypes combining BM25, dense embeddings and a vector store as implemented in search_engine.py and the build_context logic. Public code shows limited production hardening - secrets are in source, there are no tests, and operational concerns like retries, structured logging and CI are not evidenced.
Phone

Timeline

QA Automation Engineer · Middle
Secure Meters Ltd. · Full-Time
Jul 2022 to Present 4 Years 4 Months Udaipur In office
Designed and automated test plans for web and mobile applications using Python and PyTest to reduce manual testing effort across releases. Built and maintained automated test scripts for system integrations spanning API, data/ETL processes, and database layers. Developed Jenkins-based CI/CD pipelines for automated test execution, and performed API testing with Postman and JMeter to verify end-to-end flows and catch defects pre-release.
Python
Pytest
Postman
JMeter
Rest API
CI/CD
Jenkins
QA Automation Engineer (Trainee / Junior) · Junior
Secure Meters Ltd. · Full-Time
Jan 2022 to Jun 2022 5 Months Udaipur In office
Automated parts of data synchronization workflows using Python to improve operational efficiency and reduce manual errors. Supported build deployments by validating functionality with both manual and automated approaches across web, mobile, and API surfaces.
Python

Projects

ATS Resume Score Calculator
Developed an ATS resume scoring tool to evaluate resumes against required skills and job descriptions. Helped candidates understand how well their resume matches target keywords used by applicant tracking systems. Implemented logic to compute and present score results for comparison.
Scalable Test Framework with Excel Reporting
Designed a scalable automated testing framework with Excel-based reporting integration. Implemented automated JIRA-Excel workflows to support QA dashboards and trend analysis. Used the framework to standardize reporting for regression and functional coverage.
CI/CD Automation with Jenkins and Python
Created and optimized Jenkins CI/CD pipelines using Python scripts to automate test execution across build stages. Improved test run efficiency and reduced deployment validation time. Maintained stable automation behavior throughout the pipeline flow.
AMISP End-to-End Automation
Implemented end-to-end automation for AMISP workflows to validate data integrity across multiple layers. Covered functional and regression checks across API, web application, and database components. Focused on ensuring end-to-end verification from upstream inputs to stored outputs.
LLM-Based Smart Chatbot
Built an LLM-powered chatbot to answer system and ticket-related questions using natural language processing. Integrated JIRA data and implemented secure document-based Q&A. Used LangChain and FastAPI to connect the chatbot logic to the application interface.

Technical skills

Languages
3
Python
SQL
Bash
QA
4
Pytest
Postman
JMeter
Playwright
DevOps
4
Rest API
CI/CD
Jenkins
Azure
AI/ML
4
Pandas
NumPy
Streamlit
LLM
Other
25
Requests
PostgreSQL
FastAPI
Selenium
LangChain
NLTK
Redis
Appium
Robot Framework
Azure SQL Database
Qdrant
MS SQL
Power BI
GitHub
Netlify
Docker
Git
Linux
Windows
Azure Data Factory
HAProxy
QA
Zabbix
NLP
ETL/ELT
Middle AI/ML Engineer Confidence: Medium LLM Engineer
LLM-focused engineer (mid-level) specializing in retrieval-augmented chatbots and document ingestion pipelines. The strongest proven skill is building an end-to-end embedding and retrieval pipeline for document/Jira data as implemented in data_loader.py and search_engine.py. There is no evidence of custom model training, systematic experiment tracking, production-grade deployment, or meaningful performance optimization in public code.
Model Architecture & Training
1/10
How well models are designed and trained
No custom model architectures or training loops; uses a pretrained SentenceTransformer for embedding only.
Evidence
main.py: load_model() using SentenceTransformer("all-MiniLM-L6-v2")
data_loader.py: process_uploaded_file() calls model.encode(...) to create embeddings
Data Pipeline & Feature Engineering
4/10
How data is prepared for models
Reasonable end-to-end data ingestion and cleaning pipeline with chunking, field mapping and DB insert logic for document/Jira data.
Evidence
data_loader.py: FIELD_MAP and DB_COLUMNS mapping plus column normalization and chunking logic
data_loader.py: clean_value(), safe_text() helpers used during record preparation
data_loader.py: execute_values(...) insert into jira_tickets (DB insert pipeline)
Experimentation & Evaluation
1/10
How results are measured and tested
Minimal experimentation and evaluation artifacts; only basic debug output in the UI, no experiment tracking or validation suites.
Evidence
main.py: st.expander('🔍 Debug Logs') for ad-hoc logs
llm_client.py: inline comment describing HF API parameters (no tracking or evaluation harness)
MLOps & Deployment
2/10
How models are shipped to production
Simple serving approach (Streamlit) and vector DB integration (Qdrant), but no deployment, versioning, monitoring or CI/CD evidence.
Evidence
main.py: Streamlit app orchestrating search + LLM calls
search_engine.py: hybrid_search() using get_client() (Qdrant) to retrieve vectors
qdrant_store.py: get_client() import of QdrantClient (client integration for vector DB)
Computational Efficiency
1/10
How efficiently computing resources are used
No explicit efficiency work; embeddings and searches are performed naively per-row without batching, quantization or GPU profiling.
Evidence
data_loader.py: per-row model.encode(...) in process_uploaded_file()
search_engine.py: simple client.search(...) without batching or advanced query options
Research Depth & Innovation
1/10
Depth of research and new ideas
No research or paper-level implementations; the code implements standard retrieval + prompt flow without novel algorithms.
Evidence
llm_client.py: HF inference prompt wrapper implementing a simple generation call
search_engine.py: straightforward conversion of qdrant results into context blocks
Expertise
RAG· Middle
Conversational AI & Chatbots· Middle
Industries
Information Technology· Middle
Software· Middle
Technologies
Python· since 2022 · Middle
SQL
PostgreSQL
Redis
LangChain
Zabbix
Qdrant
NLP
Azure
MS SQL
HAProxy
CI/CD· since 2022
Jenkins· since 2022
Pandas
NumPy
Git
Docker
LLM
NLTK
Streamlit
Requests
Azure SQL Database
GitHub
Linux
Windows
Machine Learning· mentioned only
Recommendations
  • Develop internal knowledge-base chatbots or RAG prototypes that ingest documents and provide contextual answers using the existing embedding + Qdrant pipeline.
  • Build Streamlit prototype frontends and iterate on data ingestion and chunking logic for document QA; focus on input validation and secure secrets handling.
  • Harden the pipeline for production: add batching, retry/backoff for external calls, unit tests, CI/CD and basic monitoring for model and vector DB health.
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories:
Middle AI / LLM Engineering (Agents) Confidence: Medium Generalist
A Middle-level Python ML/GenAI engineer focused on lightweight RAG chat applications and embedding-based search. The strongest proven skill is building end-to-end RAG prototypes combining BM25, dense embeddings and a vector store as implemented in search_engine.py and the build_context logic. Public code shows limited production hardening - secrets are in source, there are no tests, and operational concerns like retries, structured logging and CI are not evidenced.
Architecture & Organization
4/10
How the project is structured
Modular app-level organization with separate UI, ingestion, search and LLM client modules, but the architecture is application-prototype quality rather than production-grade system design.
Evidence
Build-1.0.0.2_chatbot/main.py: orchestrates Streamlit UI, RAG search and single LLM call
JIRA_CHAT_BOT/search_engine.py: separates BM25, dense search and RRF fusion into reusable functions
Build-1.0.0.2_chatbot/data_loader.py: ingestion + chunking + upsert to vector store (qdrant) as a distinct component
Code Quality & Standards
3/10
How clean the code is
Readable Python code and modular files but inconsistent error handling, duplicated code, hardcoded config and no tests or typing.
Evidence
Build-1.0.0.2_chatbot/data_loader.py: duplicated try/except blocks and mixed in-memory vs DB logic
Build-1.0.0.2_chatbot/llm_client.py: simple HF integration with a single broad try/except and a generic fallback
JIRA_CHAT_BOT/Jira_ChatBot.py: UI, DB schema creation and ingestion logic mixed in one file
Engineering Culture
2/10
Teamwork and good practices
Some attention to UX (Streamlit themes and debug expander) but little in the way of engineering process artifacts like tests, CI, CONTRIBUTING or changelogs.
Evidence
Build-1.0.0.2_chatbot/main.py: debug logs expander and use of st.cache_resource showing some operational thinking
JIRA_CHAT_BOT/README.md: minimal README present (documentation is sparse)
Technical Complexity
4/10
How hard the problems solved are
Contains non-trivial information-retrieval logic (BM25 + dense + RRF fusion and context prioritization) showing application-level algorithmic work but not advanced scalability or novel algorithms.
Evidence
JIRA_CHAT_BOT/search_engine.py: bm25_search, dense_search, rrf_fusion and build_context implementations
Build-1.0.0.2_chatbot/search_engine.py: compact qdrant-based dense search and context builder for RAG
Security & Risks
2/10
Protection and risk handling
Direct security risks are present (hardcoded credentials, broad exception handling); some secrets are read via st.secrets but sensitive data appears in source.
Evidence
JIRA_CHAT_BOT/Jira_ChatBot.py: production DB host and plaintext credentials in source
Build-1.0.0.2_chatbot/data_loader.py: DB_PASSWORD hardcoded as 'Secure@123'
Build-1.0.0.2_chatbot/llm_client.py: prompt contains explicit operational rules (prompt-injection content embedded in code)
Reliability & Fault Tolerance
2/10
Stability when things fail
Basic try/except usage prevents crashes but there is minimal structured logging, no retries/backoff, and no test harness or monitoring hooks.
Evidence
Build-1.0.0.2_chatbot/data_loader.py: broad try/except blocks that return generic Streamlit errors
Build-1.0.0.2_chatbot/llm_client.py: single try/except with a generic user-facing fallback and no retry logic
Industries
Artificial Intelligence· Middle
Software· Middle
Recommendations
  • Develop retrieval-augmented chatbot prototypes and internal knowledge assistants using Streamlit, SentenceTransformers and Qdrant.
  • Build ingestion pipelines that produce chunked embeddings and upsert into vector stores, focusing on data normalization and chunk-priority logic.
  • Prototype hybrid search features (BM25 + dense + fusion) and iterate on context building for LLM prompts.
  • Harden prototypes for production by removing hardcoded secrets, adding parameterized DB access, structured logging and automated tests.
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories:
Junior QA Engineer Confidence: Low Generalist
A junior-level automation and scripting practitioner focused on small Python utilities and pragmatic automation tasks. The strongest proven skill is building a multithreaded Python bulk-email sender and file parsers that use ThreadPoolExecutor, Lock, pdfplumber and pandas to extract and process contact data. There is no evidence in the analyzed human-authored files of formal test automation frameworks, CI integration, contract testing or negative-path test design.
Test Automation Frameworks
Building automated tests
Not evidenced in public code
Test Coverage & Strategy
What and how to test
Not evidenced in public code
API & Integration Testing
Testing how parts work together
Not evidenced in public code
Performance & Load Testing
Testing speed under load
Not evidenced in public code
Bug Reporting & Analysis
Finding and describing bugs
Not evidenced in public code
CI Test Integration
Running tests automatically
Not evidenced in public code
Technologies
QA
Selenium
JMeter· since 2022
Playwright
Appium
Postman· since 2022
Pytest· since 2022
Robot Framework
Recommendations
  • Build internal automation utilities and small integration scripts that parse files and integrate with SMTP or other messaging systems, applying safety checks and secrets management.
  • Harden and extend the script into a testable module with unit tests, explicit error handling, configuration via environment variables, and secret management (no hardcoded credentials).
  • Develop small QA automation tasks that demonstrate test infrastructure skills such as Playwright test fixtures, negative-path API tests, and CI pipeline integration.
Repositories
The developer's experience in this domain has been verified based on AI analysis of the following repositories:

Job preferences

Work permits
India
Open to AI agents: they read this profile and start a dialog through Alionalion.io/@suraj-paliwal/mcp
Alion · People, companies and AI agents in one graphalion.io/@suraj-paliwal