Skip to main content

erkin@portfolio:~$ ./run --mode=recruiter

OPEN_TO_WORKUTC --:--:--

// SENIOR SOFTWARE ENGINEER

Erkin
Qarayev

5+ years shipping production software at Technosec.io — JupyterLab analytics platform, notebook-native LLM tooling, merged OSS upstream.

eq@technosec — zsh

role: Senior Software Engineer · Full-Stack Engineer · AI / LLM Engineer · Open-Source Contributor

$ whoami

erkin.qarayev · senior software engineer

$ current_focus

jupyterlab analytics platform · notebook-native LLM tooling

$ role

$ oss --merged

jupyterlab@4.2.0 · jupyter-ai · jupyter-chat

$ status

available_for_opportunities ●

0+

YEARS_EXPERIENCE

0

MERGED_OSS_PRS

0

UPSTREAM_ORGS

0+

PUBLIC_REPOS

[ 01 // ABOUT ]4 MODULES

Building intelligent systems.

Senior Software Engineer with 5+ years at Technosec.io — JupyterLab-based analytics platform and notebook-native LLM tooling. Open-source contributor to JupyterLab and the Jupyter-AI ecosystem.

01

LLM Agents & Tooling

Built Datanout, a notebook-native LLM assistant — a LangChain/LangGraph tool-calling agent with human-in-the-loop approval and a full Model Context Protocol client.

02

Memory & Safety

Cross-session memory with summarization, prompt-injection screening, secret masking on tool output, and an AST-based safety gate that blocks unsafe imports and calls in model-generated code.

03

Full-Stack Development

Python/FastAPI/Tornado backends and React/TypeScript frontends — custom JupyterLab extensions, a React Flow pipeline editor, and real-time WebSocket streaming.

04

Testing & Safety

Selenium, Playwright and pytest suites run on every push through CI, plus Datanout's defense-in-depth safety stack — an AST gate on generated code, prompt-injection screening, and secret masking.

Experience

[ 02 // EXPERIENCE ]2021 — PRESENT

Technosec.io ↗

Senior Software Engineer

2021 — present

LangGraphMCPFastAPITornadoReactTypeScriptJupyterLabPythonSecurity
  • ▸Primary author of the platform's full-stack JupyterLab extension — a custom file browser, a from-scratch React/TypeScript widget library over Ant Design and AG Grid, a module-federation app-shell, and the core plugin entry point over a Python/Tornado backend, held across two major version upgrades
  • ▸Built Datanout, a notebook-native LLM assistant — LangChain/LangGraph tool-calling agent, human-in-the-loop approval with resumable persisted interrupts, a full Model Context Protocol client, prompt-injection screening, and AST-based code safety
  • ▸Developed the platform's data-pipeline wizard, including a React Flow pipeline-graph editor with two-way ipywidgets/React state sync, now being rebuilt as a standalone FastAPI/Next.js/React app (MVP in development)
  • ▸Sole-authored two internal developer tools — a JupyterLab diagnostics/issue-reporter extension that files privacy-redacted Jira tickets, and a Python Redmine REST toolkit with a Typer CLI, a Textual TUI and an MCP server, across 506 tests
  • ▸Configured the team's AI coding assistants (Claude Code, Cursor, GitHub Copilot) with custom instruction files and hooks that hold generated code to the codebase's conventions before review
  • ▸Migrated the platform's data layer from SQLAlchemy to SQLModel on PostgreSQL, reworking the Alembic migrations, and implemented a ZeroMQ log transport between server extensions
  • ▸Wrote a TypeScript-to-Python code-generation tool that turns widget type definitions into matching Pydantic classes and fails the build on any drift between the two sides
  • ▸Diagnosed and fixed a platform-wide freeze where blocking kernel calls stalled the async event loop, moving kernel traffic onto a dedicated ZeroMQ channel to unblock concurrent users
  • ▸Owned the platform's test automation — Selenium and Playwright end-to-end tests plus a pytest suite, run on every push through CI
  • ▸Merged contributions to JupyterLab core (shipped in 4.2.0) and the Jupyter-AI agent stack

Projects

[ 03 // PROJECTS ]6 REPOS
JUPYTERLAB + JUPYTER AI · LANGCHAIN / LANGGRAPHFEATURED

Datanout — Notebook-Native LLM Assistant

A JupyterLab extension that drops an AI assistant into the notebook and lets it call tools — run cells, edit notebooks, read files, reach external servers — to do real work. Shipped as a Python server extension plus an NPM frontend, auto-discovered via the jupyter_ai.personas entry point.

  • LangChain/LangGraph tool-calling agent with token streaming
  • Human-in-the-loop approval (allow / deny / ask) with SQLite-persisted, resumable interrupts
  • Full Model Context Protocol client — pooling, per-server circuit breaker, SSRF/DNS-rebinding protection
  • Cross-session memory with summarization, token-budgeted context trimming
  • AST-based safety gate, prompt-injection screening, and secret masking for model-generated code
LangGraphMCPPythonlitellmAI Safety

FASTMCP · FIGMA · DESIGN-TO-CODE

PanelBoom — Design-to-Code Tool

An internal tool that turns Figma mockups into working Panel and Python dashboards, so designers' work becomes dashboards without hand-coding.

FastMCPFigmaPanelFlask

AES-256-GCM · CLEAN ARCHITECTURE

diffuseai — Encrypted GenAI Image CLI

A Python CLI for AI image generation with a verified end-to-end encryption layer, driving a self-hosted SDXL backend over ComfyUI.

PythonCryptographyComfyUISDXL

PYTHON · EVAL · CI GATE

kishai — LLM Evaluation Harness

A from-scratch LLM evaluation harness in Python: YAML golden-set suites scored deterministically and by an LLM-as-judge, with a replay mode that gates CI without a GPU.

PythonEvalsLLM-as-judgeCI

NEXT.JS 15 / REACT 19

Analytics Dashboard

A business-intelligence dashboard with a typed integration layer and graceful fallbacks, built to engineering-practice standards.

Next.jsReactTypeScriptDocker

JUPYTERLAB + JUPYTER-AI · MERGED

Open-Source Contributions

Merged contributions across the JupyterLab core and the Jupyter-AI agent ecosystem.

JupyterLabOpen SourcePythonTypeScript

Skills

[ 04 // SKILLS ]STACK

AI & LLM Orchestration

Datanout — LangGraph tool-calling agent with human-in-the-loop control, an MCP client, and AST-based safety.

LangGraphCORE
LangChainCORE
Tool-Calling AgentsCORE
MCP ProtocolADV
Prompt-Injection ScreeningCORE
Human-in-the-LoopCORE
Prompt EngineeringADV
Claude / OpenAI / OllamaPROV

Languages & Frameworks

Full-stack development with Python and TypeScript — real-time dashboards and FastAPI backends.

PythonPRIMARY
TypeScriptPRIMARY
ReactFRONT
Next.jsFRONT
FastAPIBACK
PydanticBACK
TornadoBACK
JupyterLabTOOLING

Testing & Quality

Real-fixture test suites and integration-first QA wired into CI/CD.

pytestUNIT
JestUNIT
PlaywrightE2E
SeleniumE2E
Visual RegressionQA
E2E AutomationQA

DevOps & Infrastructure

GitLab CI/CD with multi-stage Docker builds, deployed to AWS EC2 and S3.

CI/CD PipelinesCORE
AWS EC2 / S3INFRA
GitLab CI/CDCI
DockerINFRA
RESTful APIsAPI
ZeroMQAPI

Changelog

[ 05 // CHANGELOG ]2021 → 2025
2021

Joined Technosec.io

Joined the Agile team building the JupyterLab analytics platform; became primary author of its frontend extension and test infrastructure.

2022

Frontend extension

Custom file browser, a React/TS widget library over Ant Design and AG Grid, core plugin (primary author).

2023

Pipeline wizard

Data-pipeline wizard with a React Flow editor and two-way ipywidgets/React state sync.

2024

Internal dev tools

Sole-authored a JupyterLab diagnostics/issue-reporter and a Redmine REST toolkit (CLI, TUI, MCP server, 506 tests).

2025

Datanout + merged OSS

Notebook-native LLM agent; merged PRs into JupyterLab core and Jupyter-AI.

[ 06 // CONTACT ]

initiate_contact()

Open to new opportunities, AI architecture challenges, and innovative engineering problems.

[ erkinqara@proton.me ]
github.com/erkin98 ↗linkedin.com/in/garayev ↗