Open to offers: B2B contractor

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.

Ivan Shabanov
Ivan ShabanovYerevan, Armenia
8 min > 30 slead response with AI
8 s > 1 s100k-row scoring table
2 h > 40 minCRUD module with tests

companies I worked with

AppboosterSODAGidfinance
01approach

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.

02numbers
<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×
03cases

What I've shipped

  1. problem

    managers took about 8 minutes to reply and only during their shift — hot leads went cold, and a chat-manager headcount is expensive.

    constraints

    Load is spiky and the dialogs are live: the operator needs the queue in real time, not on page refresh.

    what I built

    The 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.

  2. problem

    marketing needed to run push campaigns without waiting on developers.

    constraints

    Marketing sends in spikes — thousands of pushes in minutes. Gateways must not fall over, duplicates must not go out.

    what I built

    A 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-off

    Direct sending would not survive those bursts, so everything went through the queue. Operations got heavier. The gateways stopped going down.

    what I'd do differently

    Building the editor on contenteditable was a mistake I later cleaned up by hand, edge case by edge case.

  3. problem

    open a new sales channel: credit reports issued right in the chat on VK, Russia's biggest social network.

    constraints

    Credit data: one report shown to the wrong person would be one too many.

    what I built

    Led 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-off

    The 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.

    stack
    NodeExpressPostgreSQLVK API
  4. problem

    9k+ leads a day: impossible to score them and match offers by hand.

    constraints

    Up to 100k rows on a single screen, and the offer decision has to land while the lead is still hot.

    what I built

    A 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-off

    Custom 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 differently

    Cursor pagination arrived only when the table was already at its ceiling. It belonged there from day one.

    stack
    Reactreact-windowWeb WorkerNodeRedis
  5. problem

    domain events and service notifications were processed inside the main service; at peak load, messages got lost.

    constraints

    what I built

    Moved 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-off

    Kafka is one more system to deploy and monitor. I took it anyway: a lost message costs more than the extra infrastructure.

    stack
    NodeKafkaPlaywrightSupertestVitestOpenTelemetryGrafana
  6. problem

    the catalog was slow: Google ranked it lower, mobile conversion sagged.

    constraints

    Frontend-only changes. The traffic is mobile — every extra kilobyte shows on a weak device.

    what I built

    Split 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-off

    More 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 differently

    These days Web Vitals budgets go into CI right away: fixing metrics without a watchdog means fixing them twice.

    stack
    ReactViteLighthouseWebP
04about

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
Ivan Shabanov with a “you are our greatest asset” award from the team
recognition from the team
05career

From agency to fintech

  1. 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.

    role

    Full-Stack Engineer

    product

    AI lead-processing assistant, Node.js microservices, React integration hub, SPA sites receiving paid traffic

    achievements
    • Led 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
  2. 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.

    role

    Full-Stack Engineer (contract)

    product

    Task-and-rewards product: React dashboard, chatbot notifications, admin verification queue

    achievements
    • Grew 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
  3. 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.

    role

    Senior Full-Stack Engineer

    product

    Credit reports, microloan-brand showcases, push campaigns, lead scoring, events on Kafka

    achievements
    • Led 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
[now]

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 >
06stack

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
07how I work with AI

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.

Claude CodeMulti-Agent PipelineGit WorktreesMCP ServersTDD Red/GreenContext7Chrome DevTools
I reply the same day

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.

08contact

Let's talk

Or reach me directly