Senior full-stack engineer:from data model to revenue
TypeScript, Node.js, React · AI agents & MCP. I ship revenue-critical products in fintech and lead generation, and set the engineering standards the team works by.

I own features end to end — data model, API, production UI, infrastructure, monitoring. Production AI is where I go deepest: model cascades, MCP servers wired into internal systems, agentic pre-review.
- <30 s
- lead response vs an ~8-minute human average: AI assistant, channel moved fully to it
- 1 week
- for a credit product to become profitable — a 3-person team I led
- <1 s
- 100,000-row lead-scoring table instead of 8 s, 9K+ leads a day
- 2 h > 40 min
- a CRUD module with tests — the AI workflow I onboarded the team on
- ~10×
- lower API costs from the LLM model cascade I designed
- 58 > 87
- Lighthouse Performance on the catalog under the agency's paid traffic, conversion ~1.5×
What I've shipped
- problem
managers took about 8 minutes to reply and only during their shift — hot leads went cold, and a chat-manager headcount is expensive.
constraintsLoad is spiky and the dialogs are live: the operator needs the queue in real time, not on page refresh.
what I builtThe assistant replies in under 30 seconds at any hour: a lead who writes at night hears back right away, while they still care. I led it: designed the LLM model cascade and routing (cheap model first, expensive on demand) for ~10× lower API costs, Redis caching, and the operator loop — a React admin panel with live dialog monitoring over WebSocket. The operator watches the queue live and steps in before the client notices anything.
- problem
marketing needed to run push campaigns without waiting on developers.
constraintsMarketing sends in spikes — thousands of pushes in minutes. Gateways must not fall over, duplicates must not go out.
what I builtA template builder and campaign panel in React: a marketer assembles and launches a campaign alone; I scoped it directly with marketing stakeholders. The NestJS backend runs a Redis-backed Bull queue with retries and exponential backoff; sending is idempotent, so duplicates never go out even on retries. Deliverability lives on its own dashboard.
trade-offDirect sending would not survive those bursts, so everything went through the queue. Operations got heavier. The gateways stopped going down.
what I'd do differentlyBuilding the editor on contenteditable was a mistake I later cleaned up by hand, edge case by edge case.
- problem
open a new sales channel: credit reports issued right in the chat on VK, Russia's biggest social network.
constraintsCredit data: one report shown to the wrong person would be one too many.
what I builtLed a 3-person team: owned the technical design, user flows and API, and integrated the NBKI credit-history bureau for scoring and decisioning. I designed the data schema for applications, reports and decisions, and built the Node.js backend: search over a 6M-row scoring dataset, the report delivered by phone number right in the bot conversation. Next to the bot, a customer portal where the user sees their applications and decisions.
trade-offThe bot and the account area run on one API over one schema. That cost extra design time upfront and keeps the logic in a single place, with no duplication.
- problem
9k+ leads a day: impossible to score them and match offers by hand.
constraintsUp to 100k rows on a single screen, and the offer decision has to land while the lead is still hot.
what I builtA Node + Express microservice polls partner APIs in parallel, with timeouts and retries, so a slow partner never delays the decision. The table is layered: cursor pagination and filtering on the API side, hot queries cached in Redis, react-window keeping ~30 of 100k rows in the DOM, heavy computation in a Web Worker.
trade-offCustom scrolling and selection take more code than dumping every row into the DOM. That's the price of sub-second renders at 60fps.
what I'd do differentlyCursor pagination arrived only when the table was already at its ceiling. It belonged there from day one.
- problem
domain events and service notifications were processed inside the main service; at peak load, messages got lost.
constraintswhat I builtMoved domain-event processing and service notifications out of the main service into Kafka: producers write events, consumers drain them at their own pace, and the peak spreads out in time instead of hitting the service. Marketing pushes stayed on their Redis Bull queue; Kafka is the event bus. Revenue-critical paths are covered with Playwright end-to-end suites, HTTP with Supertest integration tests, logic with Vitest unit tests; releases go through GitLab CI/CD to Kubernetes, tracing in OpenTelemetry, Grafana dashboards with Telegram alerts — I hear about problems from an alert, not from a complaint.
trade-offKafka is one more system to deploy and monitor. I took it anyway: a lost message costs more than the extra infrastructure.
- problem
the catalog was slow: Google ranked it lower, mobile conversion sagged.
constraintsFrontend-only changes. The traffic is mobile — every extra kilobyte shows on a weak device.
what I builtSplit the bundle by route; heavy widgets went into lazy chunks, and preloading stayed only for the critical path. Images got lazy-load and WebP. Load priorities are tuned so the first screen arrives ahead of everything else.
trade-offMore requests, and the load priorities have to live in my head. A light first screen on a cheap phone pays for both.
what I'd do differentlyThese days Web Vitals budgets go into CI right away: fixing metrics without a watchdog means fixing them twice.
Ivan Shabanov
I led the AI lead-processing assistant that cut lead response from an 8-minute human average to under 30 seconds, and led a 3-person team that took a credit product from zero to profitable in its first week. Today I am a Senior Full-Stack Engineer at Gidfinance: a cross-functional team where I ship e2e features from the backend to the interface.
- role
- Senior Full-Stack Engineer · TypeScript / Node.js / React
- focus
- Production AI: model cascades, custom MCP servers, agentic pre-review
- domain
- Fintech and lead generation: credit products, ad-traffic scoring, AI assistants
- format
- Remote · B2B contractor / EOR · full overlap with EU hours
- experience
- 4 years in production: SODA > Appbooster > Gidfinance
- English
- Professional working proficiency, daily use in a distributed team

From agency to fintech
- 01 · 2022 — 2023
SODA
remote · Aug 2022 — Oct 2023
Lead-generation agency for residential real-estate developers and law firms: ~60 employees. Owned the client-server side: APIs, database, and interfaces.
roleFull-Stack Engineer
productAI lead-processing assistant, Node.js microservices, React integration hub, SPA sites receiving paid traffic
achievementsLed the AI lead-processing assistant: lead response under 30 s vs an ~8-minute average; after a three-month humans / humans + AI / AI-only comparison the channel moved fully to the assistant — channel profitability ×3
Designed a cascade of LLM models: API costs cut tenfold
Rewrote a legacy PHP monolith into Node.js/TypeScript microservices (Express, PostgreSQL): service decomposition, migration of business logic and APIs
Internal React integration hub linking the agency's CRM with partner property developers' CRM systems
Lighthouse Performance 58 > 87 on the SPA sites receiving the agency's paid ad traffic — conversion up ~1.5×
ReactTypeScriptNode.jsExpressPostgreSQLLLMLighthouse - 02 · 2023 — 2024
Appbooster
contract · remote · Nov 2023 — Aug 2024
Mobile app marketing platform: ~100 employees, 10,000+ apps promoted for clients across 26 countries.
roleFull-Stack Engineer (contract)
productTask-and-rewards product: React dashboard, chatbot notifications, admin verification queue
achievementsGrew the task-and-rewards product from a few dozen to 1,000 daily active users in 3 months — the whole cycle: a React dashboard for paid tasks and proof, chatbot notifications that bring users back, an admin verification queue
Every payout verifiable: the full task lifecycle from pick-up to payout — a moderation queue processing hundreds of completions a day, anti-fraud rules screening out duplicates and faked proofs
Ad-traffic attribution (UTM and referrer parsing) alongside activity and return-rate metrics — paid channels judged by retained active users
ReactNode.jsExpressPostgreSQL - 03 · 2024 — now
Gidfinance
remote · Sep 2024 — present
Consumer lending product at fintech company Gidfinance. Cross-functional product team; I ship e2e features from the backend to the interface.
roleSenior Full-Stack Engineer
productCredit reports, microloan-brand showcases, push campaigns, lead scoring, events on Kafka
achievementsLed a 3-person team on an end-to-end credit-report product — design, flows, API, NBKI bureau, Node.js backend, search over 6M rows; profitable in its first week: net profit +40%, EPC doubled
Shipped a feature adjusting microloan-brand showcases to each user's loan history — approvals up
Push-campaign builder (NestJS + React): marketers launch automated sends by application status without developer involvement
Brought Claude into the project, set up MCP servers, trained colleagues on AI agents — team productivity up
100,000-row lead-scoring table (9K+ leads a day): from 8 s to under 1 s
Notification delivery and domain events on Apache Kafka: zero message loss at peak load
Devised and built the code-deployment pipeline: GitLab CI/CD into Kubernetes, OpenTelemetry tracing, Grafana alerting
Node.jsNestJSReactKafkaKubernetesGitLab CI/CDOpenTelemetryClaude CodeMCP
The next product
The next one could be yours: I take a feature from data model to production monitoring, set the engineering standards the team works by, and onboard the team on an AI workflow — Claude Code, custom MCP servers, agentic pre-review.
get in touch >AI Engineering
- Claude Code
- MCP servers
- AI agents
- Agentic code review
- LLM integration
- Model cascading & routing
- Prompt engineering
- AI chatbots
Frontend
- React 18/19
- TypeScript
- Next.js
- Redux Toolkit
- Zustand
- RTK Query
- React Router
- Ant Design
- CSS Modules / Sass
- Feature-Sliced Design
- Vite
- Webpack
- Recharts
Backend
- Node.js
- NestJS
- Hono
- Express
- PostgreSQL
- Turso
- Redis
- Kafka
- Prisma
- Drizzle ORM
- Zod
- REST
- GraphQL
- WebSocket
Infra
- Docker
- Kubernetes
- GitHub Actions
- GitLab CI/CD
- Sentry
- Grafana
- OpenTelemetry
- Playwright
- Vitest / Cypress
- Jest
- Supertest
- nginx
I keep AI on a short leash: I own system architecture and core invariants, delegating implementation grind to autonomous subagents.
I built an isolated multi-agent engineering pipeline: requirements decompose into strict DTO contracts, tests precede implementation in a strict TDD red phase, and agents execute inside isolated git worktrees gated by automated architectural review.
The team delivers complex modules with full test coverage in 40 minutes instead of 2 hours. High-speed generation meets ironclad engineering discipline — hallucinations physically cannot breach production.
Production is still on me.
Looking for an engineer who owns features end-to-end?
Drop me a couple of lines about the role and the team. CV and GitHub links are in the contact section below.
Let's talk
Or reach me directly
- LinkedInlinkedin.com/in/ishbnv
- GitHubgithub.com/ishbnv
- CVPDF
- Emailivan@ishbnv.dev
- Phone/WA
- LocationYerevan, Armenia (GMT+4) — full overlap with EU hours