Open to work · Ha Noi

Bùi ThúyNgọc.Frontend Software Engineer

I build the frontend, and untangle the business rules behind it.

Nearly 3 years shipping EdTech, CRM, and logistics SaaS with React, Angular, and React Native.

01 · Work

01

Problems I've been trusted with.

Every case starts with what was actually wrong. Then what I did, the calls I made, and what changed.

Sanan · Scrum & delivery

SanAn Kids

Frontend Developer · Scrum Master

A small change to a business rule, like how tuition is calculated for a registered service, could touch the parent app, the teacher app, and the admin web at the same time. When edge cases weren't found before development, they turned up late in QA or in production.

→ Sprint success rate above 95%, tracked with structured sprint metrics.

EZOM · Business rules & states

Organisation Subscription · Stripe

Fullstack Developer · requirement analysis

Billing has a lot of states that look alike but mean different things. A payment Stripe has accepted isn't the same as a plan EzOM has applied. A downgrade shouldn't cut access mid-period. A $0 trial invoice marked paid shouldn't flip a trial to ACTIVE. If any of these get mixed up, a customer gets charged twice or loses features they paid for.

→ Organisations can trial, buy, upgrade, downgrade, cancel, and resume plans without contacting support.

Sanan · Requirement analysis

Leads · Kizna CRM

Product Owner · requirement analysis

The CRM had nowhere to put a contact that hadn't been checked yet. Every new phone number went through the 3-step “Add family” wizard, which creates a family, a student, and an enrollment opportunity. Spam and wrong numbers sat in the family list next to real customers, logging one number meant filling a heavy form, and nobody could measure how many raw contacts actually became families.

→ PRD approved for design the day it was written, with all four blocking questions resolved.

Sanan · Product · process · engineering

Kizna

Product Owner · Fullstack Developer

The challenge wasn't just building new features. It was turning a fragmented, AI-first product into a usable, maintainable system that actually meets customers' needs.

→ Product requirements and issue tracking in one place.

EZOM · Integration requirements

Monthly Invoices & Statements · Xero

Fullstack Developer

Account managers had to produce each organisation's monthly invoice and statement in Xero by hand, outside EzOM, while the transactions behind them lived inside EzOM.

→ Account managers generate and download monthly invoices and statements from the organisation list.

02 · AI workflow

02

AI writes the code. The workflow decides when.

On Kizna CRM we run an AI-driven development framework. The process lives in the tooling instead of in people's memory. Every request is classified, routed to a role, and can't skip steps: no design, no code. No tests, no release.

Workflow engine

Reads the request, finds the ticket ID, and classifies it as a new feature, a small improvement, or a bug fix.

claude · cursor · codex — illustrative session

you ›I want to change how trials are billed (EZOM-1538)

engine ›ticket EZOM-1538 · type: improvement · prd.md not found

03 · Products

04 · How I work

04 · how I work

From a vague request to a shipped feature.

  1. 1

    Map the rules first

    Turn a request into flows, business rules, edge cases, and acceptance criteria, and list everything else the change will touch.

  2. 2

    Agree before building

    Walk through the solution with Backend, QA, and Design so nobody discovers a different interpretation during review.

  3. 3

    Ship small, test what matters

    Split work into reviewable slices. Protect the important flows with Jest, Playwright, or Cypress.

  4. 4

    Look back, fix the process

    Use sprint metrics and retros to remove the friction that keeps coming back.

05 · Toolkit

The sticker sheet.

05 · Everything I reach for, grouped by the job it does, from business analysis to AI-assisted dev to deployment.

Product & BA

Requirement AnalysisBusiness RulesUser StoriesAcceptance CriteriaProcess MappingChange Impact AnalysisProduct RoadmapUAT Support

AI-assisted dev

CursorClaude CodeCodexAI Skills & workflowsSpec-first prompting

Frontend

React.jsReact NativeNext.jsAngularTypeScript

CMS & Desktop

WordPressElementorForminatorElectron

State & UI

Redux ToolkitReact QueryZustandReact Hook FormYupTailwindCSSAnt DesignMUI

Testing

JestPlaywrightGaugeCypress

Tools

GitGitHubGitLabFigmaPostmanFirebase

Backend

Express.jsNestJSREST APIGraphQLNodeJSPostgreSQL

Deployment

DockerVPSNginxCircleCIMonorepoGitHub ActionsAmazon Inspector

Collaboration

Agile ScrumJiraRedmineNotionGitBookEnglish communication

06 · Notes

07 · Fun facts

07 · fun facts,
in no particular order (except #1).

  • First prize, Sanan DebateTurns out arguing about edge cases is good practice for an actual debate.
  • Dream Team of the YearAwarded to our team at Sanan.
  • 5-star student, 2024Recognised by Thuy Loi University while running the Student Union and a 20-person club.
  • TOEIC 720Used every day with EZOM's Australian team: docs, meetings, customer support.

Got a product with messy rules?

I like those.

Bui Thuy Ngoc | Frontend Software Engineer