EXPLORE
Ronnie Nguyen
6+ years · Vietnam & Global

Ronnie
Nguyen

“Being always the one who wants to work hard and smart, aiming to create as much value as possible for both myself and the company. Beside that, I love creating a fun environment where I can work and smile at the same time.”
know more about me ↓
the introduction me

I am a Digital Project Manager at Heads on Pillows, specialising in hospitality and tourism marketing across Vietnam and Global.

With a background in SEO/GEO, PPC, and social media, I work at the intersection of strategy, execution, and client management — ensuring digital projects are delivered smoothly, on time, and aligned with business goals.

Read More
the expertise me
SEO / GEO Project Management Website Development PPC Social media management Branding Content Strategy
the background me

Built from the
ground up.

From property operations in Saigon to digital project management for global hospitality brands.

Present Mar 2026

Leading digital marketing project management for hospitality clients — overseeing SEO, GEO/AIO, paid media, and cross-agency campaign execution for hotels and resorts across Vietnam and beyond.

Project Management SEO & GEO/AIO Paid Media Hospitality
Feb 2026 Jul 2024

Delivered SEO and Generative Engine Optimisation strategies for hospitality clients across traditional and AI-powered search environments — an early mover in GEO/AIO for the hotel sector.

SEO GEO / AIO Hospitality
Jun 2024 Apr 2024

Applied technical and content SEO skills within a fast-paced agency setting, delivering performance-driven outcomes across a diverse client portfolio.

SEO Agency
Apr 2024 May 2023

Led the SEO team — setting strategy, mentoring junior members, and owning campaign performance across multiple client accounts.

Team Lead SEO Strategy People Management
Apr 2023 Apr 2022

Hands-on execution across keyword research, on-page optimisation, content strategy, and link building across a diverse range of client websites.

SEO On-Page Link Building
Apr 2022 Apr 2019

Three years in residential building operations — progressing from Administration and Property Manager Assistant through to Customer Service Manager.

Property Operations Customer Service Administration
the skills me
Project Management AI Using Team Building Client Relationship Management Photography Data Analytics Presentation Training Planning
the portfolio me

Brands I’ve
supported.

Heads On Pillows
Artemis Digital
Detailers Movement
CB/I Digital
My House JSC
Heads On Pillows
Artemis Digital
Detailers Movement
CB/I Digital
My House JSC
the article me

What I’m
writing about.

the contribution me

Beyond the
screen.

Work
🚀
Major Projects

Driving digital success for leading brands in hospitality and beyond.

Profile
📸
Digital Strategy

Crafting tailored marketing roadmaps with precision and creativity.

Personal
Personal Ventures

Exploring the intersection of technology, marketing, and community.

Ready to build something
impactful together?

Connect on LinkedIn or send a message to discuss how Ronnie Nguyen can help your hospitality brand grow.

padding: 0; position: relative; overflow: hidden; z-index: 2; } .pb-hero-left { position: relative; overflow: hidden; } .pb-hero-left img { width: 100%; height: 100%; object-fit: cover; display: block; } .pb-hero-left-overlay { position: absolute; inset: 0; background: linear-gradient(to right, transparent 70%, var(--white) 100%); } .pb-hero-right { display: flex; align-items: center; padding: 5rem 4rem 5rem 3rem; background: var(--white); } .pb-hero-inner { max-width: 480px; } .pb-hero-eyebrow { display: block; font-size: 0.72rem; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent-blue); margin-bottom: 1.4rem; animation: fadeUp 0.9s 0.1s ease both; } .pb-hero-name { font-family: var(--font-display); font-size: clamp(4rem, 7vw, 7.5rem); font-weight: 300; line-height: 0.95; letter-spacing: -0.02em; color: var(--ink); margin-bottom: 2rem; animation: fadeUp 0.9s 0.25s ease both; transform-origin: left top; will-change: transform, opacity; } .pb-hero-quote { font-family: var(--font-display); font-size: clamp(0.9rem, 1.2vw, 1.1rem); font-style: italic; font-weight: 300; line-height: 1.85; color: var(--ink-light); border: none; padding: 0; margin: 0 0 2.4rem; animation: fadeUp 0.9s 0.42s ease both; } .pb-hero-link { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent-blue); text-decoration: none; border-bottom: 1px solid rgba(91,155,213,0.35); padding-bottom: 0.2rem; transition: color 0.25s, border-color 0.25s; animation: fadeUp 0.9s 0.58s ease both; } .pb-hero-link:hover { color: var(--ink); border-color: var(--ink); } /* ============ ABOUT ME ============ */ #pb-about { background: linear-gradient(135deg, var(--blue-soft) 0%, var(--pink-soft) 100%); padding: 7rem var(--gutter); text-align: center; position: relative; z-index: 2; } .pb-about-inner { max-width: 700px; margin: 0 auto; } .pb-about-p1 { font-family: var(--font-display); font-size: clamp(1.3rem, 2.2vw, 2rem); font-weight: 300; line-height: 1.5; color: var(--ink); margin-bottom: 1.6rem; } .pb-about-p2 { font-size: 1rem; font-weight: 300; color: var(--ink-light); line-height: 1.85; } /* ============ WORD STAGE (Expertise & Skills) ============ */ #pb-expertise, #pb-skills { height: 100vh; min-height: 600px; padding: 5rem var(--gutter) 4rem; position: relative; overflow: hidden; display: flex; flex-direction: column; z-index: 2; /* sit above canvas so words render on top */ } /* White bg — canvas waves show through underneath */ #pb-expertise { background: transparent; } #pb-skills { background: transparent; } .pb-word-stage { position: relative; flex: 1; width: 100%; } /* Each floating word */ .pb-word { position: absolute; left: var(--ix); top: var(--iy); font-family: var(--font-display); font-weight: 300; cursor: default; display: inline-block; transition: color 0.3s; will-change: transform; white-space: nowrap; line-height: 1; } .pb-word--xl { font-size: clamp(2.6rem,5vw,5rem); color: var(--ink); } .pb-word--lg { font-size: clamp(2rem,4vw,4rem); color: var(--ink); } .pb-word--md { font-size: clamp(1.4rem,2.5vw,2.5rem); color: var(--ink-light); } .pb-word--sm { font-size: clamp(1rem,1.7vw,1.7rem); color: var(--ink-muted); } #pb-expertise .pb-word:hover { color: var(--accent-blue); } #pb-skills .pb-word:hover { color: var(--accent-rose); } /* Tooltip */ .pb-word-tip { position: absolute; pointer-events: none; background: var(--ink); color: var(--white); font-family: var(--font-body); font-size: 0.78rem; line-height: 1.55; padding: 0.55rem 0.9rem; border-radius: 8px; max-width: 220px; opacity: 0; transform: translateY(6px); transition: opacity 0.2s, transform 0.2s; z-index: 10; white-space: normal; } .pb-word-tip.visible { opacity: 1; transform: translateY(0); } /* ============ IMAGE BREAK ============ */ #pb-imgbreak { width: 100%; overflow: hidden; height: 420px; background: linear-gradient(135deg, var(--blue-soft), var(--pink-soft)); position: relative; z-index: 2; } #pb-imgbreak img { width: 100%; height: 100%; object-fit: cover; display: block; } /* ============ TIMELINE ============ */ #pb-background { background: linear-gradient(135deg, var(--blue-soft) 0%, var(--pink-soft) 100%); padding: 6rem var(--gutter); position: relative; z-index: 2; } .pb-bg-intro { font-size: 0.92rem; color: var(--ink-light); max-width: 480px; line-height: 1.75; margin: 0.5rem 0 3rem; } .pb-tl { max-width: 680px; } .pb-tl-row { display: grid; grid-template-columns: 80px 1px 1fr; align-items: stretch; margin-bottom: 0; } .pb-tl-dates { display: flex; flex-direction: column; align-items: flex-end; padding: 14px 14px 0 0; gap: 3px; } .pb-tl-date-start { font-size: 0.68rem; font-weight: 500; color: var(--ink-light); letter-spacing: 0.02em; white-space: nowrap; } .pb-tl-date-end { font-size: 0.65rem; color: var(--ink-muted); white-space: nowrap; } .pb-tl-spine { display: flex; flex-direction: column; align-items: center; position: relative; } .pb-tl-line { width: 1px; background: rgba(91,155,213,0.18); flex: 1; min-height: 8px; } .pb-tl-line--hide { background: transparent; } .pb-tl-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--white); border: 2px solid rgba(91,155,213,0.4); flex-shrink: 0; margin: 0 -4.5px; z-index: 1; transition: background 0.2s, border-color 0.2s; } .pb-tl-dot--active { background: var(--accent-blue); border-color: var(--accent-blue); box-shadow: 0 0 0 4px rgba(91,155,213,0.15); } .pb-tl-row:hover .pb-tl-dot:not(.pb-tl-dot--active) { background: var(--accent-blue); border-color: var(--accent-blue); } .pb-tl-body { padding: 8px 0 0 20px; } .pb-tl-btn { width: 100%; display: flex; align-items: flex-start; gap: 10px; padding: 8px 10px 9px; background: transparent; border: none; border-radius: 9px; cursor: pointer; text-align: left; color: inherit; font-family: inherit; transition: background 0.15s; } .pb-tl-row:hover .pb-tl-btn, .pb-tl-row.pb-tl-open .pb-tl-btn { background: rgba(91,155,213,0.05); } .pb-tl-btn-text { flex: 1; } .pb-tl-role { font-size: 0.9rem; font-weight: 600; color: var(--ink); line-height: 1.3; margin-bottom: 3px; } .pb-tl-co { font-size: 0.75rem; color: var(--ink-muted); } .pb-tl-chev { width: 14px; height: 14px; color: var(--ink-muted); flex-shrink: 0; margin-top: 2px; transition: transform 0.25s; } .pb-tl-row.pb-tl-open .pb-tl-chev { transform: rotate(180deg); } .pb-tl-panel { overflow: hidden; transition: max-height 0.32s ease; } .pb-tl-panel-inner { padding: 6px 10px 4px 0; } .pb-tl-desc { font-size: 0.82rem; line-height: 1.72; color: var(--ink-light); margin: 0 0 0.7rem; } .pb-tl-tags { display: flex; flex-wrap: wrap; gap: 5px; } .pb-tl-tag { font-size: 0.67rem; color: var(--accent-blue); background: rgba(91,155,213,0.07); border: 1px solid rgba(91,155,213,0.2); border-radius: 20px; padding: 3px 9px; } /* ============ PORTFOLIO ============ */ #pb-portfolio { padding: 6rem var(--gutter); background: linear-gradient(135deg, var(--blue-soft) 0%, var(--pink-soft) 100%); position: relative; z-index: 2; } .pb-logo-wrap { overflow: hidden; margin-top: 3rem; mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent); -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent); } .pb-logo-track { display: flex; gap: 1.8rem; width: max-content; animation: pbLogoScroll 24s linear infinite; } .pb-logo-track:hover { animation-play-state: paused; } .pb-logo-slide { flex-shrink: 0; width: 240px; height: 90px; background: rgba(255,255,255,0.85); backdrop-filter: blur(6px); border-radius: 14px; display: flex; align-items: center; justify-content: center; padding: 1rem 2rem; box-shadow: 0 4px 20px rgba(26,26,46,0.06); border: 1px solid rgba(91,155,213,0.1); overflow: hidden; } .pb-logo-slide img { max-width: 100%; max-height: 100%; object-fit: contain; filter: grayscale(1); opacity: 0.7; transition: filter 0.3s, opacity 0.3s; } .pb-logo-slide:hover img { filter: none; opacity: 1; } .pb-logo-slide span { font-size: 0.8rem; font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-muted); } @keyframes pbLogoScroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } /* ============ ARTICLES ============ */ #pb-articles { padding: 6rem var(--gutter); background: transparent; /* let canvas waves show through */ position: relative; z-index: 2; } .pb-articles-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 1.4rem; margin-top: 3rem; } .pb-article-card--featured { grid-column: span 2; } .pb-article-card { background: linear-gradient(135deg, rgba(227,241,255,0.5), rgba(253,242,242,0.3)); border: 1px solid rgba(91,155,213,0.1); border-radius: 20px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.3s, box-shadow 0.3s; } .pb-article-card:hover { transform: translateY(-6px); box-shadow: 0 16px 48px rgba(26,26,46,0.1); } .pb-article-thumb { overflow: hidden; } .pb-article-thumb img { width: 100%; height: 200px; object-fit: cover; display: block; transition: transform 0.5s; } .pb-article-card--featured .pb-article-thumb img { height: 260px; } .pb-article-card:hover .pb-article-thumb img { transform: scale(1.04); } .pb-article-body { padding: 1.6rem; flex: 1; display: flex; flex-direction: column; gap: 0.5rem; } .pb-article-cat { font-size: 0.67rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-blue); } .pb-article-cat a { color: inherit; text-decoration: none; } .pb-article-title { font-family: var(--font-display); font-size: 1.1rem; font-weight: 400; line-height: 1.35; color: var(--ink); flex: 1; } .pb-article-card--featured .pb-article-title { font-size: 1.4rem; } .pb-article-title a { color: inherit; text-decoration: none; transition: color 0.2s; } .pb-article-title a:hover { color: var(--accent-blue); } .pb-article-date { font-size: 0.72rem; color: var(--ink-muted); } .pb-no-posts { color: var(--ink-muted); font-size: 0.9rem; margin-top: 2rem; } /* ============ CONTRIBUTION ============ */ #pb-contribution { padding: 6rem var(--gutter); background: linear-gradient(135deg, var(--blue-soft) 0%, var(--pink-soft) 100%); position: relative; z-index: 2; } .pb-contrib-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem; margin-top: 3rem; } .pb-contrib-card { background: rgba(255,255,255,0.8); backdrop-filter: blur(8px); border: 1px solid rgba(91,155,213,0.12); border-radius: 20px; overflow: hidden; transition: transform 0.3s, box-shadow 0.3s; } .pb-contrib-card:hover { transform: translateY(-6px); box-shadow: 0 16px 48px rgba(26,26,46,0.1); } .pb-contrib-img { width: 100%; height: 200px; background: linear-gradient(135deg, var(--blue-soft), var(--pink-soft)); overflow: hidden; } .pb-contrib-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.5s; } .pb-contrib-card:hover .pb-contrib-img img { transform: scale(1.04); } .pb-contrib-body { padding: 2rem; } .pb-contrib-icon { font-size: 1.8rem; margin-bottom: 0.8rem; } .pb-contrib-title { font-family: var(--font-display); font-size: 1.2rem; font-weight: 500; color: var(--ink); margin-bottom: 0.6rem; } .pb-contrib-desc { font-size: 0.87rem; color: var(--ink-light); line-height: 1.75; } /* ============ CONTACT ============ */ #pb-contact { padding: 10rem var(--gutter); background: #0a0a14; /* Slightly deeper than ink */ text-align: center; position: relative; overflow: hidden; z-index: 2; display: flex; justify-content: center; align-items: center; } /* ============ CONTACT ============ */ #pb-contact { padding: 10rem var(--gutter); background: radial-gradient(ellipse at 40% 40%, #0d1828 0%, #060609 100%); text-align: center; position: relative; overflow: hidden; z-index: 2; display: flex; justify-content: center; align-items: center; } /* Meteor Canvas */ #pb-meteor-canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; } /* Glass Wrapper */ .pb-contact-glass-wrap { position: relative; z-index: 2; background: rgba(255, 255, 255, 0.01); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.07); border-radius: 20px; padding: 6rem 4rem; max-width: 760px; width: 100%; } .pb-contact-inner { position: relative; z-index: 1; max-width: 500px; margin: 0 auto; } .pb-contact-inner .section-label { color: rgba(255,255,255,0.25); margin-bottom: 2rem; } .pb-contact-inner .section-label::before { background: rgba(255,255,255,0.15); } .pb-contact-headline { font-family: var(--font-display); font-size: clamp(3rem, 6vw, 4.2rem); font-weight: 300; line-height: 1.1; color: var(--white); margin-bottom: 1.5rem; letter-spacing: -0.01em; } .pb-contact-headline em { font-style: italic; color: var(--accent-blue); font-weight: inherit; } .pb-contact-sub { font-size: 0.95rem; color: rgba(255,255,255,0.4); line-height: 1.8; margin: 0 auto 3.5rem; max-width: 420px; } .pb-contact-actions { display: flex; gap: 1.5rem; justify-content: center; flex-wrap: wrap; } #pb-contact .btn-light { background: var(--white); color: #060609; padding: 1.1rem 2.6rem; border-radius: 100px; font-weight: 600; font-size: 0.85rem; letter-spacing: 0.03em; } #pb-contact .btn-outline-light { border-color: rgba(255,255,255,0.18); color: var(--white); padding: 1.1rem 2.6rem; border-radius: 100px; font-size: 0.85rem; letter-spacing: 0.03em; } #pb-contact .btn-light:hover { background: var(--accent-blue); color: var(--white); transform: translateY(-5px); box-shadow: 0 15px 30px rgba(91,155,213,0.3); } #pb-contact .btn-outline-light:hover { background: rgba(255,255,255,0.04); border-color: var(--white); transform: translateY(-5px); } @media (max-width: 768px) { .pb-contact-glass-wrap { padding: 4rem 1.5rem; } } /* ============ RESPONSIVE ============ */ @media (max-width: 900px) { #pb-hero { grid-template-columns: 1fr; height: auto; min-height: 100vh; } .pb-hero-left { height: 50vh; min-height: 300px; } .pb-hero-left-overlay { background: linear-gradient(to bottom, transparent 60%, var(--white) 100%); } .pb-hero-right { padding: 3rem var(--gutter) 5rem; } .pb-hero-inner { max-width: 100%; } /* Word clouds: elegant stacked list on mobile */ .pb-word-stage { height: auto; position: static; padding: 1rem 0 2rem; display: flex; flex-direction: column; align-items: center; gap: 0; } .pb-word { position: static; display: block; text-align: center; width: 100%; margin: 0; padding: 0.75rem 0; font-size: 1.1rem !important; font-weight: 300; letter-spacing: 0.04em; font-style: italic; color: var(--ink) !important; border-bottom: 1px solid rgba(0,0,0,0.07); transform: none !important; } .pb-word:last-of-type { border-bottom: none; } .pb-word-tip { display: none; } #pb-expertise, #pb-skills { height: auto; padding: 4rem var(--gutter) 3rem; } .pb-articles-grid { grid-template-columns: 1fr 1fr; } .pb-article-card--featured { grid-column: span 2; } .pb-contrib-grid { grid-template-columns: 1fr; } .pb-pillars-grid { grid-template-columns: 1fr; } } @media (max-width: 600px) { .pb-articles-grid { grid-template-columns: 1fr; } .pb-article-card--featured { grid-column: span 1; } }