Vo Xuan Nhi Tran

Vo Xuan Nhi
Tran

Software Engineering student at USyd · Backend Software Engineer at Althea Room

I build and ship software end to end: production APIs and databases at Althea Room, CI/CD to Google Play, and an AI tool 40 students used.

Penultimate year in 2027 · Graduating 2028 · Sydney

FIG. 1 · ASK AN AI ABOUT MY WORKASK ↓
AboutSydney, Australia

I'm Nhi, a Software Engineering student in Sydney. I build full-stack products end to end, from the database and API to CI and deployment, and I care about shipping things that real people use.

Currently
Backend Software Engineer (part-time)Althea Room LLC, remote
Studying
B.Eng (Hons) Software EngineeringUniversity of Sydney, 2024 to 2028
Scholarships
Dalyell Scholarand Vice Chancellor's International Scholarship
Ask NhiAI assistant

Ask anything about my work.

Type a question or pick one below. An AI assistant answers from my projects and experience, and the graph lights up the parts it used.

KNOWLEDGE GRAPHASK ANYTHING
0/300
NhiAbout NhiAlthea Room LLCAlthea Room LLCJobCompassJobCompassRAG Document AssistantRAG Document AssistantRenoPilotRenoPilotTalentMatchTalentMatchAir Quality ModelAir Quality ModelAndroidAndroidAPI designAPI designAuthenticationAuthenticationAWS EC2AWS EC2CICIClient commsClient commsDB migrationDB migrationDjangoDjangoEmbeddingsEmbeddingsEvaluationEvaluationFastAPIFastAPIGitHub ActionsGitHub ActionsJavaScriptJavaScriptLeadershipLeadershipLLMsLLMsNext.jsNext.jsNginxNginxpgvectorpgvectorPostgreSQLPostgreSQLPromptingPromptingPythonPythonRAGRAGRate limitingRate limitingReactReactRedisRedisSecuritySecurityTestingTestingThree.jsThree.jsTypeScriptTypeScriptWebSocketsWebSocketsDockerDockerJavaJavaGitGitMachine learningMachine learningscikit-learnscikit-learn
FIG. 1  Claude answers only from Nhi’s portfolio, and the skills it uses light up.
WorkIndustry

Althea Room LLC

Backend Software Engineer (Contributor)

Oct 2026 – now
Remote

Backend APIs, a production database migration, security reviews and CI/CD across Althea's wellbeing apps: Life, Focus and Mind.

  • Built and extended REST APIs for Althea's wellbeing apps, including the Mind backend (8 endpoints, 6 tables) with shared authentication integrated from the Core service.
  • Migrated the Focus PostgreSQL database from a managed cluster to a self-hosted VPS, verified 12/12 tables, and prepared the cutover plans for Core and Focus.
  • Ran security reviews across 5 backend repositories, patching 13 issues, and fixed auth and password-reset bugs found in beta testing.
  • Set up CI/CD with GitHub Actions: tests, dependency audit, Sonar, and a release pipeline to Google Play, for both backend and mobile repos.

Python · PostgreSQL · GitHub Actions · SonarCloud · Android · React · Next.js

ALTHEA · CI/CD + DB MIGRATIONINTERACTIVE
  1. buildqueued
  2. testsqueued
  3. dependency auditqueued
  4. sonarqueued
  5. security scanqueued
Security findingsrun the pipeline

The scan hasn’t run yet. Press Run.

Google Play releaseblocked until green
  1. internal
  2. closed beta
  3. production · 10% rollout
$ waiting for a run
Checks haven’t run
FIG. 2  CI/CD: fix what blocks the pull request, then ship to Google Play. DB: copy, verify, then cut over. Made-up data, not Althea Room's code.
ProjectsUni, hackathon and personal

JobCompass

Futura Remix Hackathon 2026

Sep 2026 – Oct 2026

Checking job ads against student-visa rules, with the ad itself quoted as evidence for every verdict.

  • A tool that checks job ads against Australian student visa requirements. It combines Gemini extraction with rule-based logic and quotes the ad as evidence for every verdict.
  • Deployed to production with analytics, Redis caching and rate limiting.

Next.js · TypeScript · Gemini API · Redis

VISA CHECK · STUDENT VISA · 48 H / FORTNIGHTINTERACTIVE
job_ad.txt

Harbour Bean Café is hiring casual baristas for our Newtown store. Shifts are 15 to 20 hours per week, with flexible rostering around uni timetables. Barista experience preferred but training is provided.

blocks limits fits context

  1. Role typeCasual or part-time work can fit around study.
  2. HoursAd says up to 20 h per week (40 h per fortnight), under the 48 h limit during semester.
  3. FlexibilityFlexible rostering makes it easier to stay under the limit.
VerdictLIKELY ELIGIBLE15 to 20 hours per week
FIG. 3  Pick a job ad. The verdict quotes the ad as proof. Made-up ads, simplified rules. Not migration advice.

TalentMatch

Internship matching platform

Sep 2026 – Nov 2026

A full-stack internship platform with personalised match scores, built while leading a team of five.

  • A full-stack platform with student applications, saved roles, application tracking and personalised match scores, plus employer tools for managing job postings and applicants.
  • Deployed on AWS EC2 behind Nginx with HTTPS and a custom domain.
  • Migrated from SQLite to PostgreSQL with a least-privilege database role.
  • Real-time notifications using Django Channels, WebSockets and Redis.

Django · JavaScript · PostgreSQL · Redis · Django Channels · WebSockets · AWS EC2 · Nginx

MATCH SCORE · 2 ROLES · 6 SKILLSINTERACTIVE
Student profile
71%match for Backend Intern
  • Python22/30
  • SQL17/25
  • Django7/20
  • Communication15/15
  • Git10/10

Biggest win: one more level of Python adds about +8 points.

FIG. 4  Pick a role, drag the skills. The score updates as you go. Made-up roles, illustrative formula.

RAG Document Assistant

Multilingual question answering over PDFs

Aug 2026 – Oct 2026

Asking questions of PDFs in English or Vietnamese, with every answer grounded in the source text.

  • A multilingual (English/Vietnamese) RAG backend that uses embeddings and cosine similarity in pgvector to ground Gemini's answers in uploaded PDFs.
  • pytest suite running in GitHub Actions CI.
  • Deployed on AWS EC2 behind Nginx.

Python · FastAPI · React · pgvector · AWS EC2 · Nginx · GitHub Actions

SIMULATION · TF-IDF IN YOUR BROWSER · 8 CHUNKSINTERACTIVE
2
  1. chunk 010.075

    Members can borrow up to 12 books at a time. Loans last three weeks and can be renewed twice online.

  2. chunk 020.067

    Late items are charged 50 cents per day, up to a maximum of 10 dollars per item. Fees must be paid before borrowing again.

  3. chunk 030.000

    The library is open 8am to 9pm on weekdays. On weekends it opens 10am to 5pm, and it is closed on public holidays.

  4. chunk 040.000

    Printing costs 10 cents per page in black and white and 40 cents per page in colour. Printers accept student cards.

  5. chunk 050.000

    Group study rooms seat up to six people and can be booked for two hours per day through the website.

  6. chunk 060.089

    Lost or damaged books are charged at replacement cost plus a 15 dollar processing fee.

  7. chunk 070.000

    Quiet zones are on level 3. Phone calls and group discussion are not allowed there.

  8. chunk 080.070

    Laptops can be borrowed from the front desk for four hours with a student card. Late laptops are charged 5 dollars per hour.

Grounded answer

Lost or damaged books are charged at replacement cost plus a 15 dollar processing fee. [6] Members can borrow up to 12 books at a time. [1]

Sources
  • riverside_library_handbook.pdf · chunk 06 · cos 0.089
  • riverside_library_handbook.pdf · chunk 01 · cos 0.075
FIG. 5  Ask a question. The top chunks light up and the answer cites them. A simulation: TF-IDF on a made-up handbook, in your browser. The real app uses embeddings, pgvector and Gemini.

RenoPilot

Capstone project, renovation quoting platform

Aug 2026 – Nov 2026

Renovation quotes customers can look around in, with a 3D room preview and a live cost breakdown.

  • An interactive 3D room preview, a fixtures list, and a cost breakdown in customer quote reports.
  • The landing page and a persistent light/dark theme, which the client accepted and merged.
  • 148 integration tests covering the quote flow.

Next.js · TypeScript · Three.js · PostgreSQL

QUOTE · BATHROOM 3.0 × 2.4 MINTERACTIVE

Loading 3D preview…

Drag to orbit
tiles
vanity
shower
Terrazzo tiles · 7.2 m²$648
Vanity · Single 900$980
Screen shower$1,400
Labour (35%) + demolition$2,860
GST 10%$589
Total estimate$6,477
FIG. 6  Swap tiles, vanity or shower. The room and the quote update together. Made-up prices, not the client's code.

Air Quality Model

Machine learning team project, ENGG2112

Sep 2026 – Oct 2026

Can a country's electricity mix predict its air pollution? I built the data pipeline, the Europe model and an Australia 2030 scenario, and showed the honest answer is mostly no.

  • The data cleaning pipeline that merges national electricity data with PM2.5 exposure into one clean table, plus the team's first baseline Random Forest.
  • The Europe regional model: 41 countries, trained on 2000–2018 and tested on 2019–2022, with time-respecting cross-validation and models chosen on validation error only. It reached R² 0.86 on the test years, about 1.5 µg/m³ off on average, and beat the "same as 2018" baseline (R² 0.79).
  • An ablation showing the electricity mix adds almost nothing: a control with only year and country scored about the same (R² 0.87). The skill comes from knowing the country and the trend.
  • An Australia 2030 scenario with the team's Oceania model: if fossil fuels fell to 25% of electricity, three models disagreed even on the direction (−1.2 to +0.6 µg/m³), and 25% is outside Australia's historical range, so the effect is small and not reliable.

Python · pandas · scikit-learn · Ridge regression · Random Forest · Matplotlib

PM2.5 × ELECTRICITY MIX · CLEANING → MODELINTERACTIVE
fxenergy_df = pd.read_csv(energy_path) pm25_df = pd.read_csv(pm25_path)
World Energy Consumption.csv
ABCDEFGHIJ…
1countryyearcoal_share_elecgas_share_elecoil_share_elechydro_share_elecnuclear_share_elecsolar_share_elecwind_share_elecother_renewables_share_elecmore columns
2Sweden20190.1250.1721.69238.81439.2650.40411.7867.743
3Norway20190.031.5390.49393.61900.0074.1250.187
4Poland200393.7671.6133.121.113000.080.307
5Australia199982.7277.7930.8497.86900.020.0210.548
6South Sudan20190010000000
7Afghanistan1990
8Asia201952.72917.9433.25313.5244.5752.6863.5941.695
average-exposure-pm25-pollution.csv
ABCD
1EntityCodeYearPM2.5 air pollution, mean annual exposure (micrograms per cubic meter)
2SwedenSWE20195.99
3NorwayNOR20196.15
4PolandPOL200330.58
5AustraliaAUS19996.16
6South SudanSSD201924.23
7AfghanistanAFG199048.43
8MonacoMCO201912.56
average-exposure-pm25-pollution.csv: 7,242 rowsreal rows, a sample

1. Read both files. Two public datasets: each country’s electricity mix by year, and its average PM2.5 exposure.

FIG. 7  Step through the real cleaning code as a spreadsheet, then toggle what the model may use. Real data and models from the project, scored on test years they never saw.

Education

  • Bachelor of Engineering (Honours), Software EngineeringUniversity of Sydney · 2024 to 2028 (expected)Data Structures & Algorithms, Software Construction & Design, Systems Programming, Data Management, Security Engineering

Recognition

  • Dalyell ScholarUniversity of Sydney
  • Vice Chancellor's International ScholarshipUniversity of Sydney
  • Futura Remix Hackathon 2026Built JobCompass

Toolkit

  • LanguagesPython, Java, TypeScript/JavaScript, SQL, HTML/CSS
  • FrameworksReact, Next.js, FastAPI, Django, Django REST Framework, Three.js
  • DataPostgreSQL, pgvector, SQLite, Redis
  • Tools & cloudDocker, Git, GitHub Actions, AWS EC2, Nginx, Vercel, Render, pytest, JUnit, SonarCloud
ContactEmail is best

Looking for a software engineering internship or junior role. Happy to talk about backend, AI products, or anything on this page.

xuannhi2k6@gmail.com ↗