Technical Lead · Sunmi Thailand
Bangkok, Thailand

Afif Mansib Chowdhury

I lead engineering at Sunmi Thailand on GPOS — the country's best-selling retail POS software, running on 10,000+ merchant terminals across Bangkok and Shanghai teams.

The work spans Node.js services, React Native dashboards, Kotlin native modules on POS hardware, and offline-first sync across borders. The problems I find most interesting sit where software meets hardware — NFC read reliability, payment idempotency, and keeping a till trading when the network drops.

10,000+

Merchant terminals running GPOS

$50M+

Annual transaction volume

Alibaba-standard certified — 94%, 98%

5

Thai bank payment integrations

Engineering Deep Dives

Where software meets the counter

Retail point of sale is the least forgiving software category I've worked in. It handles money, it runs on hardware you don't control, it has to work with no connection, and when it fails the merchant cannot trade — they aren't inconvenienced, they're closed.

The four problems below are the ones that shaped how I build. Each began as a production symptom rather than a design exercise.

01

NFC taps were failing, and sometimes double-firing

The problem

Card reads on the payment terminals were intermittently failing. Worse, an occasional single tap registered as two reads — on a device that moves money, that is a double charge.

What I did

The failures traced to Android's foreground dispatch, which performs an intent round-trip and an NDEF check before handing over the tag. That is too slow for payment-speed reads and drops taps under load. I moved to reader-mode polling with tuned IsoDep timeouts, then added tag-presence debouncing at the hardware boundary so the physical presence of one card can only ever produce one logical read.

Idempotency belongs at the boundary where the event originates. Deduplicating downstream would have been treating the symptom.

KotlinAndroid NFCIsoDepReader Mode
02

Cross-border latency was blocking sales

The problem

Transaction data from Thai stores syncs to Alibaba Cloud. Cross-border latency was degrading reporting — and when sync sat in the transaction path, a slow link meant a slow till.

What I did

Rather than chase the network, I inverted the dependency. Writes journal locally first and sync asynchronously as idempotent deltas, with retry and jitter to avoid thundering-herd reconnects. Conflict handling assumes duplicate delivery rather than trying to prevent it.

The failure mode moved off the shop floor. A slow link now delays how fresh the dashboard is, instead of stopping a merchant from selling.

Offline-firstIdempotent syncRetry with jitterAlibaba Cloud
03

One JavaScript codebase, three runtimes, many form factors

The problem

GPOS runs on Android POS terminals, desktop web and mobile web — with different screen geometry, different peripherals, and in the terminal's case a second customer-facing display.

What I did

The Max IoT platform compiles a single codebase to all three targets with adaptation per hardware form factor. This is not React Native or a web wrapper — it is direct device manipulation from JavaScript. Building on it meant rethinking deployment, state synchronisation and performance across environments that share almost nothing but the business logic.

The same transaction logic runs on a terminal at a Bangkok supermarket and in a browser on a phone. At ten thousand terminals, every inefficiency multiplies by ten thousand.

Max IoTAndroidDual-screenNode.js
04

Documentation that fails the build when it goes stale

The problem

Every engineering team's documentation rots silently. Nobody notices until someone follows an instruction that stopped being true four months ago.

What I did

I built a drift checker into the team's process. Every document declares, in front-matter, the code it covers. A checker compares each document against that code in git and exits non-zero when the code has moved and the document has not. The same source generates per-project ISO 29110 audit packs.

Engineers don't write documentation. They move their card, put the feature ID in the commit, and answer a question when the checker raises one.

PythonGitISO 29110Lark
Certified Expert

Alibaba & Sunmi Product Development Certification

The first Bangladeshi and non-Chinese engineer in Sunmi's history to be certified as a Product Development Expert under Alibaba-standard assessment — earned across two rigorous training and delivery programmes at Sunmi's headquarters.

Historic Distinction

First Bangladeshi · First non-Chinese engineer · Certified by Sunmi + Alibaba engineering standard

2023

Alibaba-Standard Product Development Certification — First Bangladeshi Engineer

Selected as the first non-Chinese and first Bangladeshi engineer to undergo intensive training at Sunmi's headquarters and earn the Alibaba-standard Product Development Expert certification. Immersed in Alibaba's engineering standards and the Max IoT platform ecosystem alongside core R&D engineers.

Certified as Product Development Expert (Alibaba + Sunmi standard) — 94% score. First Bangladeshi and non-Chinese engineer in Sunmi's history to receive this certification.

2025

Advanced Certification — Product Delivery Expert Recognition

Returned to Sunmi headquarters to deliver the completed GPOS project and undergo advanced certification. Led technical presentations showcasing the Thailand team's market achievements. Participated in knowledge exchange with core R&D team and received formal recognition from Sunmi CTO — a principal architect behind Alibaba Cloud.

98% score on advanced Alibaba-standard assessment. Formally certified as Sunmi Max Product Development Expert — reaffirming the distinction as the only Bangladeshi engineer to hold this certification.

Professional Profile

Afif Mansib Chowdhury

Technical Lead · Sunmi Thailand

Bangkok, Thailand·Open to relocation & remote roles

Core Competencies

POS & Payments

Offline-first sync · Payment idempotency · Five Thai bank integrations

IoT & Hardware

NFC/RFID · Receipt & label printers · Scanners · Dual-screen terminals

Backend Systems

Node.js · NestJS · Express · FastAPI · PostgreSQL · MongoDB

Mobile & Native

React Native · Native Android in Kotlin · Expo

AI Engineering

LLM pipelines · Document extraction · Human-in-the-loop review

Engineering Leadership

Bangkok–Shanghai delivery · Architecture standards · ISO 29110

Career Highlights

01

First non-Chinese engineer admitted to Sunmi’s Max IoT programme, after a three-month written and technical selection

02

Certified to Alibaba engineering standard twice — 94% at Shanghai HQ in 2023, 98% on the advanced assessment in 2025

03

Lead GPOS engineering across Bangkok and Shanghai — Node.js services, React Native dashboards, Kotlin native modules

04

Wrote the first English-language documentation for the Max IoT IDE, which existed only in Mandarin

05

Built the hardware abstraction layer that lets new terminal models certify without an application rebuild

06

Designed the documentation-drift system now used across the team, generating ISO 29110 audit packs from source

What GPOS Is

A dual-screen Android POS application spanning cashier, order, table service, goods, reporting and tax — with a customer-facing second display, a printing and templating subsystem, shift handover with cash reconciliation, and a hardware abstraction layer for printers, scanners and payment terminals. Node.js services behind it, React Native merchant dashboards on top, Kotlin native modules where the hardware needs them. It serves restaurants, retail, convenience stores, hotels and entertainment venues across Thailand. gpos.co.th

Career

The Work, In Detail

Led as Technical Lead of the Thailand engineering team at Sunmi, and earlier built cross-border commerce infrastructure connecting the Thai, Japanese, and Bangladeshi markets.

Technical Lead

December 2023 – Present
Sunmi Thailand Bangkok, ThailandCurrent Role
  • Lead GPOS development across the full stack — Node.js services, React Native merchant dashboards, Kotlin native modules on Sunmi Android terminals, and the Max IoT low-code layer for terminal UI.
  • Diagnosed intermittent NFC read failures on card tap. Replaced Android foreground dispatch with reader-mode polling and tuned IsoDep timeouts, then added tag-presence debouncing so a single physical tap cannot register as two reads.
  • Re-architected store-to-cloud synchronisation after cross-border latency to Alibaba Cloud degraded transaction reporting from Thai stores. Moved to local-first journaling with asynchronous idempotent delta sync and retry with jitter, so a slow link delays reporting instead of blocking a sale.
  • Built the hardware abstraction layer for receipt printers, label printers, scanners and payment terminals. New device models certify without an application rebuild.
  • Designed the documentation-drift system now used across the team: every document declares the code it covers, the checker fails when documentation lags git, and per-project ISO 29110 audit packs are generated from the same source.
  • Led the internal data platform migration — NestJS 10, TypeScript 5, npm to pnpm, AWS SDK v2 to v3, zero-downtime PM2 reloads on EC2.
  • Lead engineering across Bangkok and Shanghai. Directed delivery of the internal ERP, the sales analytics pipeline, and the delivery and driver applications.

Software Engineer — Max IoT Programme

October – December 2023
Sunmi HQ Shanghai, China
  • Selected as the first non-Chinese engineer admitted to Sunmi's Max IoT programme, following a three-month written and technical assessment.
  • Trained three months at Shanghai headquarters alongside Sunmi and Alibaba engineers under the CTO. Scored 94% and earned Alibaba-standard Application Delivery certification across both the engineering and project management tracks.
  • Authored the first English-language documentation for the Max IoT IDE, which existed only in Mandarin — the dependency that unblocked onboarding for the entire Thai engineering team.
  • Recertified in 2025 when Sunmi headquarters travelled to Bangkok to assess the Thailand team, scoring 98% on the advanced Alibaba-standard assessment.

Software Engineer

September 2022 – December 2023
Sunmi Thailand Bangkok, Thailand
  • Built the first production POS modules and the Node services behind them.
  • Integrated payment gateways for five major Thai banks, covering authorisation, settlement and reconciliation.
  • Implemented real-time inventory synchronisation against third-party APIs.
  • Built the NFC identity card reader for Sunmi terminals in Kotlin, covering secure card data extraction and validation.

Software Engineer

December 2020 – September 2022
Bhalogari (Bhalo Ventures) Remote — Japan / Bangladesh
  • Built a cross-border marketplace connecting Japanese and Thai vehicle exporters to Bangladeshi buyers, working directly with both the Japanese and Bangladeshi teams.
  • Delivered the web platform in Next.js, TypeScript and Express alongside the React Native application, serving 50,000 monthly active users.
  • Handled multi-currency pricing, international logistics coordination and bilingual UX across a three-market commerce pipeline.
  • Rebuilt database queries and API endpoints on AWS RDS, reducing page load time by 3.2 seconds.
  • Joined as an intern in December 2020 and was hired as an engineer in January 2021.
Selected Work

Things I’ve built

Production systems, client work and open-source releases. Where a project had a genuinely hard problem in it, that problem is described rather than the feature list.

Retail & IoT

Point of sale, payment hardware and the devices on the counter.

GPOS

Sunmi Thailand · production

Thailand's best-selling retail POS software. A dual-screen Android terminal application spanning cashier, order, table service, goods, reporting and tax — with a customer-facing second display, a printing and templating subsystem, shift handover with cash reconciliation, and licence enforcement.

Engineering challenge

A till that cannot trade is worse than a till that is slow. Every architectural decision — offline journaling, idempotent sync, hardware abstraction — follows from the fact that a network drop must never stop a sale.

10,000+ merchant terminalsDual-screen Android POS
Node.jsReact NativeKotlinMax IoTAlibaba Cloud

NFC Card Reader & Tap Reliability

Sunmi terminals · Kotlin

Native Android NFC module for reading and validating identification and stored-value cards on Sunmi payment terminals, including secure card data extraction.

Engineering challenge

Card taps were failing intermittently. Root cause was Android's foreground dispatch — it performs an intent round-trip and an NDEF check before handing over the tag, which is too slow for payment-speed reads. Replaced it with reader-mode polling and tuned IsoDep timeouts. Then added tag-presence debouncing, so a single physical tap cannot register as two reads — on a payment terminal that is the difference between one charge and two.

KotlinAndroid NFCIsoDepReader Mode

Cross-Border Store Sync

Sunmi Thailand · architecture

Store-to-cloud synchronisation for transaction data moving from Thai retail floors to Alibaba Cloud.

Engineering challenge

Cross-border latency was degrading transaction reporting. Rather than optimise the link, I inverted the dependency: writes journal locally first, then sync asynchronously as idempotent deltas with retry and jitter. A slow link now delays reporting freshness instead of blocking a sale — the failure mode moved from the customer to the dashboard.

Offline-firstIdempotencyDelta syncAlibaba Cloud

Hardware Abstraction Layer

Sunmi Thailand · platform

A single abstraction covering receipt printers, label printers, barcode and QR scanners, cash drawers and payment terminals across Sunmi hardware form factors.

Engineering challenge

The common failure is calling a printer library directly from the receipt screen and a card-reader SDK from checkout. It demos fine — until a supplier discontinues a model and the change touches forty files. Solving it once at the boundary means new device models certify without an application rebuild.

IoTDevice driversPeripheral integration

QR Table Ordering

Sunmi Thailand · production

Self-service ordering for restaurants. Diners scan a table QR code, browse the menu and pay from their own phone; orders route straight into the POS for kitchen and service fulfilment — no extra hardware on the floor.

ReactReal-time syncMobile-first

Max IoT SDK & English Documentation

Sunmi HQ, Shanghai

SDK libraries and the first English-language reference for Sunmi's Max IoT IDE, which until then existed only in Mandarin — documentation, code comments, error toasts and configuration labels.

Engineering challenge

This was a critical-path dependency, not a translation exercise. Without it the Thai engineering team could not onboard, and the Thailand go-to-market could not start.

SDK designDeveloper experienceDocumentation

AI Systems

Agent runtimes and document pipelines built to be wrong safely.

AI Agent Orchestrator

Alienstacks · open source

Multi-tenant orchestration service for AI agents that do real work — around 14,500 lines of Python across 44 modules. Provisions per-tenant workspaces, routes every model call through a cost-aware router, meters usage against a wallet, and lets agents execute the code they write inside E2B microVMs.

Engineering challenge

Inference cost is cost of goods sold when you resell agent labour. Routing classifies each call by difficulty and walks a priority chain — free-tier capacity first, paid models only when the task warrants it. Tenant credentials are Fernet-encrypted at rest and never cross a tenant boundary.

PythonFastAPIE2BStripeMongoDB

AI Bookkeeping Agents

Japanese tax accounting · open source

Agent runtime that drafts journal entries from source documents and submits them for human approval, built for Japanese tax accounting firms.

Engineering challenge

Models are good at reading and bad at counting. So the model reads and code counts — file parsing and all arithmetic happen in local tools, and a spreadsheet never reaches the model. Agents authenticate through the public API with a scoped key, exactly like an employee, so row-level security and approval gates stay enforced server-side. Nothing commits without a person.

TypeScriptAnthropic APIHuman-in-the-loopAudit trails

AI Quotation Pipeline

Precision manufacturer, Japan

Reads incoming engineering drawings and returns a costed manufacturing quote — Gemini for vision extraction, Claude for specification validation and cost reasoning, with market-rate adjustment applied in code.

Engineering challenge

Confidence is tracked at every stage, and each step degrades rather than drops the request: if validation fails the pipeline continues on the extracted specification, and if the database write fails the quote is still returned. A model failure downgrades the result instead of losing the job.

GeminiClaudeDocument extractionNode.js

Platforms

Marketplaces, payments and multi-tenant products.

Double-Blind Settlement Engine

Own product · open source

A returns-settlement platform where the customer keeps the item and negotiates a partial refund through sealed bidding — up to six private rounds in which neither party ever sees the other's figure.

Engineering challenge

When the entire product promise is that the other side cannot see your number, "we were careful" is not a guarantee. The privacy boundary is an explicit response mapper: counterparty amounts and internal serial numbers are structurally incapable of appearing in the wrong response. Money is integer cents end to end, rate limits are tiered by abuse surface, and the e2e suite plays the full journey against a disposable database.

NestJSMongoDBNext.js 15Zode2e testing

Sunmi Internal ERP

Sunmi Thailand · production

Internal operations platform connecting the Thailand and China teams — clock-in and clock-out, weekly and monthly KPIs, sales reporting and inventory visibility across both organisations.

Next.jsNestJSPostgreSQLAWS

AssetXtoken

PropTech · Belgium & Thailand

Property platform enabling fractional ownership through tokenisation, serving buyers, tenants, landlords and agents across two markets.

Engineering challenge

The hard part sits between fiat and chain: a payment must be verified, KYC cleared, token quantity computed, tokens issued and the ledger updated — atomically, with rollback on any failure. Built as an event-driven pipeline with idempotency keys at every step so a retried webhook can never double-issue.

Next.jsNode.jsERC-20KYC/AMLStripe

Crowdfunding Platform

Bangladesh · open source

Crowdfunding for a market international platforms don't serve — Expo React Native app, Next.js web client and an Express API built around SSLCommerz, the gateway behind bKash and local bank transfers.

Engineering challenge

The payment path came first, because campaign funding is only as good as it. Full lifecycle including IPN — the server-to-server callback that confirms payment independently of whether the user's browser ever returns to the success URL. Treating the redirect as confirmation is how you lose money on this gateway.

ExpoReact NativeExpressSSLCommerzS3

Bhalogari

Cross-border marketplace

Marketplace connecting Japanese and Thai vehicle exporters to Bangladeshi buyers — multi-currency pricing, international logistics coordination and bilingual UX across three markets.

50,000 monthly active users
Next.jsTypeScriptReact NativeAWS RDS

Glowetsu

Travel booking · Japan

Tour and taxi booking platform for the Japanese market with English and Japanese support, custom tour packaging and Stripe checkout.

Engineering challenge

Double-booking was the risk. Unpaid bookings hold a slot via a MongoDB TTL index that releases automatically after thirty minutes, and confirmation only happens on the Stripe webhook — so an abandoned checkout frees the slot without manual cleanup.

Next.jsMongoDB TTLStripe webhooksAWS Cognito

Technical Arsenal

Languages

TypeScriptJavaScriptPythonKotlin

Backend

Node.jsNestJSExpressFastAPI

Frontend & Mobile

ReactNext.jsReact NativeNative Android (Kotlin)

Data

PostgreSQLMongoDBRedisAWS RDS

Infrastructure

AWS (EC2, S3, RDS, Cognito)Alibaba CloudDockerPM2CI/CD

Domain

POS architectureOffline-first syncPayment integrationNFC / RFIDIoT peripherals

AI

LLM pipelines (Claude, Gemini)Document extractionHuman-in-the-loop review

Honors & Achievements

National Runner-Up

Bangladesh Math Olympiad

2012

National Runner-Up

Bangladesh Physics Olympiad

2010

Product Development Expert — Alibaba standard

Certified at Sunmi HQ Shanghai across engineering and project-management tracks. 94% (2023), recertified 98% (2025).

First non-Chinese engineer certified on Max IoT

Admitted to Sunmi's Max IoT programme after a three-month written and technical selection.

Education & Academic Excellence

Assumption University of Thailand

Bachelor of Science in Computer Science

Bangkok, Thailand

President of the Bangladesh Student Community — led the largest South Asian student body on campus

Focused on full-stack development, algorithms, and software engineering

Bridged academic work with real-world enterprise projects — cross-border commerce and IoT platform development

Notre Dame College

Higher Secondary Certificate (HSC)

Dhaka, Bangladesh

One of Bangladesh's most prestigious and selective public colleges

Graduated with Golden GPA — maximum grade point average

Multiple Math & Science Olympiad certificates — recognized for analytical excellence

Government merit scholarship recipient

Adamjee Cantonment Public School

Secondary School Certificate (SSC)

Dhaka, Bangladesh

Ranked 70th across the entire Dhaka Board in the SSC examination

Achieved Golden GPA — perfect grade point average

Multiple Math & Science Olympiad certificates earned at the national level

Government scholarship holder at Grade 5 (Primary), Grade 8 (JSC), and Grade 10 (SSC) — scholarship throughout entire school career