M. Kodirov

Mukhammadali Kodirov

Backend engineer in Kobe, Japan. I build Node.js, Go and PostgreSQL systems on AWS, cut what they cost to run, and connect LLMs to them with fallbacks that hold up.

−57% RDS cost−30% dev and staging cost0 card numbers handled by staff

Open to remote Senior Backend and Backend + AI roles

CustomersALBEC2RDSS3SESPaymentsVPC
Read system details

Energy

Customer portal for an electricity retailer, on AWS. Customers check usage and pay bills. I built the payment flow on top of it.

Customers
Log in to see meter readings and bills, pay, and manage their card.
Office staff (old process)
Used to update customer cards from CSV files by hand, seeing raw card numbers. About half a day per update.
Auth0 (external)
Customer sign-in. Payment routes need scoped permissions, so customers only reach their own records.
Application Load Balancer
HTTPS termination and host-based listener rules for the portal, API and test domains.
EC2: nginx and the Go API
Billing, meter readings and payment endpoints. Receives the payment provider webhook when a card is registered.
RDS PostgreSQL
Contracts, meter-reading logs and bills. Stores payment tokens, never card numbers.
Amazon S3
File uploads, and deploy artifacts shared with EC2 through presigned URLs.
Amazon SES
Transactional email to customers.
Hosted payment page (external)
Customers enter cards on the provider page. A webhook tells the API the card is registered, and only a token comes back.
CloudWatch billing alarms
Billing alarms that were fixed so unexpected charges get noticed early.

HR & back office

Internal tools for a Japanese company: attendance, leave, overtime approvals and online hiring exams, plus a LINE bot for travel expenses.

Employees (web and PWA)
Clock in and out, request leave and overtime, submit daily reports and transport expenses.
Azure AD sign-in
Company single sign-on through Auth.js.
Job applicants
Take a ticket-gated online exam before hiring. No account needed.
Next.js 16 app
Pages and 124 API routes, each guarded by role checks. Runs in Docker, deployed by GitHub Actions.
MySQL 8 with Prisma
49 data models. Approval changes keep an append-only history of who changed what.
node-cron container
Grants statutory paid leave and runs reminders on a schedule, secured against outside triggers.
Microsoft Teams and Slack
Approval cards for managers in Teams, error alerts in Slack.
Staff in LINE
Log a trip or an expense by chatting with the bot.
NestJS webhook
Works out travel distance and creates the expense claim. A Next.js admin handles approvals.
MySQL
Trips, claims and approval status.

Sales tech

B2B outreach in Japan. One system finds target companies and drafts messages with AI. A Chrome extension fills their contact forms using a model fallback chain.

Company finder
Collects target companies and their contact-form pages.
Next.js app on Vercel
Where the sales team reviews targets, edits AI drafts and sends them.
Supabase (Postgres)
Companies, drafts and send status.
AI outreach drafts
An LLM writes a first-draft message for each company. People review before anything is sent.
Chrome extension
Captures the contact form as a screenshot plus cleaned DOM, then fills in the answer.
Backend API
Accepts form-analysis jobs and returns results to the extension.
BullMQ queue
Keeps the extension fast. Slow model calls run in the background.
Vision worker
Sends each form to the model chain and validates the answer.
Gemini 2.5 Flash-Lite (default)
Cheapest and fastest. Handles most forms.
Gemini 2.5 Flash (fallback 1)
Takes over when Flash-Lite fails or returns an invalid answer.
Claude Haiku (fallback 2)
Last resort for the hardest forms.
DeepSeek (text only)
Has no image input, so it only reads the cleaned DOM.

Logistics

Delivery management for a trading company. Drivers update each delivery in a mobile app, and the office sees it live. I was project lead.

Drivers
See their route and mark each delivery done from their phone.
Flutter mobile app
One codebase for iOS and Android.
Firebase
Syncs delivery status between drivers and the office in real time.
Office staff
Assign deliveries and watch progress as it happens.

Recruitment

A job marketplace connecting job-seekers and employers in Uzbekistan. I designed and built the backend, one API for both web and mobile.

Website
Job-seekers search and apply. Employers post jobs.
Mobile app
Runs on the same API as the website.
Employers
Post jobs and review applicants.
Node.js and Express API
The backend I designed and built. One API for both clients, reaching 800+ users.
MongoDB
Profiles, job posts and applications.

Education

Student award points at a learning center. Teachers used to collect them on paper every week. A Telegram bot and web app made it instant.

Teachers
Enter points right after class instead of on paper.
The old process
Staff collected points from every class by hand. It took 3 days a week.
Telegram bot
Teachers send points through a messenger they already use every day.
MERN web app
Stores points and serves live standings to students.
MongoDB
Points history for every student.
Students
See their standings seconds after a teacher enters points.

Selected work

Each project names the problem, what I changed, and what it was worth. Client names are left out.

PostgreSQL 13 to 16 on AWS RDS

A production RDS database was still on PostgreSQL 13.20. Standard support had ended, so AWS was adding Extended Support surcharges to every monthly bill.

  • Spotted the surcharge in billing and traced it to the engine version.
  • Took RDS snapshots and application-state backups, and moved every connection to enforced SSL.
  • Upgraded to PostgreSQL 16.3 in a scheduled maintenance window, then smoke-tested the live user flows.
Read the write-up
−57%monthly cost

Infrastructure cost went from $700 to $300 a month, and every database connection now uses SSL.

AWS RDSPostgreSQL 16Node.js

Tokenized card payments on AWS

On an AWS-hosted electricity platform, staff updated customer cards by hand from CSV files. They saw raw card numbers, and each update took about half a day.

  • Led the integration as project manager, using the provider's hosted payment page so card data never touches our servers.
  • Gave customers self-service card updates, with the API storing only payment tokens.
  • Scoped API permissions so only the owning customer can create or read a payment.
0cards seen by staff

A half-day manual task became instant self-service, and staff no longer handle card numbers at all.

GoAWS EC2ALBPaygentAuth0

Dev and staging that shut down at night

Development and staging ran on cloud databases and an RDS Proxy around the clock, for a team that works Tokyo hours.

  • Replaced the dev RDS Proxy with containerized local databases.
  • Added a scheduled Lambda that stops staging and dev on nights and weekends.
  • Kept every environment on the same schema with Prisma migrations.
Read the write-up
−30%per month

Lower monthly cloud cost, and near-zero database latency for the dev team.

AWS LambdaEventBridgeDockerPrisma

AutoReach Pro: vision AI for Japanese business forms

A Chrome extension that reads Japanese company contact forms and fills them in. Layouts vary so much that no single model handles every page.

  • Built a vision pipeline that starts with Gemini 2.5 Flash-Lite and falls back to Gemini 2.5 Flash, then Claude Haiku.
  • Routes DeepSeek to cleaned DOM only, since it has no image input.
  • Runs analysis jobs through BullMQ so the extension never waits on a slow model.
In development

The cheapest model handles most pages. Stronger models take over only when it fails.

GeminiClaude APIBullMQChrome Extension

Experience

Five years of shipping web backends, most recently leading client projects in Japan.

  1. Software Engineer

    Quin-Que Inc., Kobe

    I run client projects end to end, from requirements to release, across web, mobile and AWS infrastructure.

    • Cut a production database bill by 57% ($700 to $300 a month) with an RDS PostgreSQL upgrade.
    • Replaced staff-handled card updates with tokenized self-service payments, turning a half-day task into an instant one.
    • Found an idle dev database billing $178.56 a month in AWS Extended Support, snapshotted and deleted it, and fixed the billing alarms.
    • Develop and maintain an internal HR platform for attendance, leave and overtime approvals: 124 API routes on Next.js 16, Prisma and MySQL.
    • Moved a WordPress site off AWS EC2 to a new server, moving files with rsync and the database with MariaDB.
    Internal HR platform: attendance, leave, overtime, hiring examsNext.js 16, Prisma, MySQL, Docker
    Tokenized card payments for an electricity platformGo, AWS, Paygent
    Sales automation: finds target companies, drafts outreach with AI, submits contact formsNext.js, Supabase, Vercel
    WordPress migration off AWS EC2EC2, rsync, MariaDB
    Delivery management mobile app for a trading companyFlutter, Firebase
    LINE bot for travel-distance tracking and expense claimsNestJS, Next.js, MySQL
    Browser-based glass film simulator with product adminNext.js, Prisma, MySQL
  2. CTO

    Yetti.jp, Kobe

    Technical lead for a small web, mobile and AI studio serving Japanese and international clients. I'm building AutoReach Pro, the vision-AI form-filling extension above.

  3. Backend Developer

    Navana Inc.

    • Designed and built the backend for an early-stage job marketplace connecting job-seekers with employers across Uzbekistan.
    • One set of APIs served both the website and the mobile app, reaching 800+ users across both.
  4. Full-stack Developer, part-time

    Algoritm Learning Center, Namangan

    • Replaced paper and Excel point tracking with a MERN web app and a Telegram bot for teachers.
    • Weekly point collection dropped from 3 days to half a day (−83%), and students saw their standings within seconds.
    • Every teacher and student at the center used it.
  5. Customer Service Manager

    Phobos, Japan

    Customer-facing work in Japanese before I moved into software.

Hiring for a remote backend role?

Email is the fastest way to reach me. I work in English, Japanese and Uzbek.