1<!DOCTYPE html><html lang="en" dir="ltr" class="2xl:text-[20px]"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="sitemap" href="/sitemap-index.xml"><link rel="shortcut icon" href="/_astro/favicon.hYpDKHDT.ico"><link rel="icon" type="image/svg+xml" href="/_astro/favicon.BmM8shuK.svg"><link rel="mask-icon" href="/_astro/favicon.BmM8shuK.svg" color="#8D46E7"><link rel="apple-touch-icon" sizes="180x180" href="/_astro/apple-touch-icon.CLDMfpU_.png"><style> 2 :root { 3 --aw-font-sans: 'Inter Variable'; 4 --aw-font-serif: 'Inter Variable'; 5 --aw-font-heading: 'Inter Variable'; 6 7 --aw-color-primary: rgb(251 153 12); /* SpeakPrac Orange/Amber */ 8 --aw-color-secondary: rgb(245 158 11); /* SpeakPrac Orange/Amber */ 9 --aw-color-accent: rgb(220 38 38); /* IELTS Red */ 10 11 --aw-color-text-heading: rgb(0 0 0); 12 --aw-color-text-default: rgb(16 16 16); 13 --aw-color-text-muted: rgb(16 16 16 / 66%); 14 --aw-color-bg-page: rgb(255 255 255); 15 16 --aw-color-bg-page-dark: rgb(3 6 32); 17 18 ::selection { 19 background-color: lavender; 20 } 21 } 22 23 .dark { 24 --aw-font-sans: 'Inter Variable'; 25 --aw-font-serif: 'Inter Variable'; 26 --aw-font-heading: 'Inter Variable'; 27 28 --aw-color-primary: rgb(251 153 12); /* SpeakPrac Orange/Amber */ 29 --aw-color-secondary: rgb(245 158 11); /* SpeakPrac Orange/Amber */ 30 --aw-color-accent: rgb(220 38 38); /* IELTS Red */ 31 32 --aw-color-text-heading: rgb(247, 248, 248); 33 --aw-color-text-default: rgb(229 236 246); 34 --aw-color-text-muted: rgb(229 236 246 / 66%); 35 --aw-color-bg-page: rgb(3 6 32); 36 37 ::selection { 38 background-color: black; 39 color: snow; 40 } 41 } 42</style>
42<script>(function(){const defaultTheme = "light"; 43 44 function applyTheme(theme) { 45 if (theme === 'dark') { 46 document.documentElement.classList.add('dark'); 47 } else { 48 document.documentElement.classList.remove('dark'); 49 } 50 const matches = document.querySelectorAll('[data-aw-toggle-color-scheme] > input'); 51 52 if (matches && matches.length) { 53 matches.forEach((elem) => { 54 elem.checked = theme !== 'dark'; 55 }); 56 } 57 } 58 59 if ((defaultTheme && defaultTheme.endsWith(':only')) || (!localStorage.theme && defaultTheme !== 'system')) { 60 applyTheme(defaultTheme.replace(':only', '')); 61 } else if ( 62 localStorage.theme === 'dark' || 63 (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) 64 ) { 65 applyTheme('dark'); 66 } else { 67 applyTheme('light'); 68 } 69})();</script>
69<title>About SpeakPrac | Matthew Alberto & Phuong Nguyen â SpeakPrac</title> 70<meta name="description" content="Meet Matthew Alberto (Band 9, Certified IELTS Teacher) and Phuong Nguyen, co-founders of SpeakPrac â the AI-powered IELTS Speaking practice app. Pride of Australia Medal winners."> 71<meta name="robots" content="index,follow"> 72<link rel="canonical" href="https://speakprac.com/about"> 73<meta property="og:title" content="About SpeakPrac | Matthew Alberto & Phuong Nguyen"> 74<meta property="og:description" content="Meet Matthew Alberto (Band 9, Certified IELTS Teacher) and Phuong Nguyen, co-founders of SpeakPrac â the AI-powered IELTS Speaking practice app. Pride of Australia Medal winners."> 75<meta property="og:url" content="https://speakprac.com/about"> 76<meta property="og:type" content="website"> 77<meta property="og:image" content="https://speakprac.com/_astro/og-default.DGHMYEc9_Z20v6RT.jpg"> 78<meta property="og:image:width" content="1200"> 79<meta property="og:image:height" content="630"> 80 81<meta property="og:locale" content="en"> 82<meta property="og:site_name" content="SpeakPrac"> 83<meta name="twitter:card" content="summary_large_image"> 84<meta name="twitter:site" content="@speakprac"> 85<meta name="twitter:creator" content="@speakprac"><meta name="google-site-verification" content="orcPxI47GSa-cRvY11tUe6iGg2IO_RPvnA1q95iEM3M">
vendor: 63 bytes, line 85
85<script async src="https://www.googletagmanager.com/gtag/js?id=
85G-WLQGNWDBFE
vendor: 33 bytes, line 85
85" type="text/partytown"></script>
85<script type="text/partytown">(function(){const id = "G-WLQGNWDBFE"; 86 87 window.dataLayer = window.dataLayer || []; 88 function gtag() { 89 window.dataLayer.push(arguments); 90 } 91 gtag("js", new Date()); 92 gtag("config", id); 93})();</script>
93<!-- Comment the line below to disable View Transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap">
93<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CDGfc0hd.js"></script>
93<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Person","name":"Matthew Alberto","jobTitle":"CEO, CTO & Co-founder","url":"https://speakprac.com","sameAs":["https://www.youtube.com/@MatthewAlberto","https://x.com/MatthewAlberto","https://www.linkedin.com/in/matthewalberto"],"worksFor":{"@type":"Organization","name":"SpeakPrac"},"alumniOf":[{"@type":"CollegeOrUniversity","name":"University of New South Wales (UNSW)"},{"@type":"CollegeOrUniversity","name":"University of Sydney (USYD)"},{"@type":"CollegeOrUniversity","name":"UCL"}]},{"@type":"Person","name":"Phuong Nguyen","jobTitle":"CMO, COO & Co-founder","worksFor":{"@type":"Organization","name":"SpeakPrac"},"alumniOf":[{"@type":"CollegeOrUniversity","name":"University of New South Wales (UNSW)"}]}]}</script>
93<link rel="stylesheet" href="/_astro/common-mistakes.DWcKtRcW.css">
93<script>!(function(w,p,f,c){if(!window.crossOriginIsolated && !navigator.serviceWorker) return;c=w[p]=Object.assign(w[p]||{},{"lib":"/~partytown/","debug":false});c[f]=(c[f]||[]).concat(["dataLayer.push"])})(window,'partytown','forward');/* Partytown 0.11.0 - MIT QwikDev */ 94const t={preserveBehavior:!1},e=e=>{if("string"==typeof e)return[e,t];const[n,r=t]=e;return[n,{...t,...r}]},n=Object.freeze((t=>{const e=new Set;let n=[];do{Object.getOwnPropertyNames(n).forEach((t=>{"function"==typeof n[t]&&e.add(t)}))}while((n=Object.getPrototypeOf(n))!==Object.prototype);return Array.from(e)})());!function(t,r,o,i,a,s,c,l,d,p,u=t,f){function h(){f||(f=1,"/"==(c=(s.lib||"/~partytown/")+(s.debug?"debug/":""))[0]&&(d=r.querySelectorAll('script[type="text/partytown"]'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(l=setTimeout(v,(null==s?void 0:s.fallbackTimeout)||1e4),r.addEventListener("pt0",w),a?y(1):o.serviceWorker?o.serviceWorker.register(c+(s.swPath||"partytown-sw.js"),{scope:c}).then((function(t){t.active?y():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&y()}))}),console.error):v())))}function y(e){p=r.createElement(e?"script":"iframe"),t._pttab=Date.now(),e||(p.style.display="block",p.style.width="0",p.style.height="0",p.style.border="0",p.style.visibility="hidden",p.setAttribute("aria-hidden",!0)),p.src=c+"partytown-"+(e?"atomics.js?v=0.11.0":"sandbox-sw.html?"+t._pttab),r.querySelector(s.sandboxParent||"body").appendChild(p)}function v(n,o){for(w(),i==t&&(s.forward||[]).map((function(n){const[r]=e(n);delete t[r.split(".")[0]]})),n=0;n<d.length;n++)(o=r.createElement("script")).innerHTML=d[n].innerHTML,o.nonce=s.nonce,r.head.appendChild(o);p&&p.parentNode.removeChild(p)}function w(){clearTimeout(l)}s=t.partytown||{},i==t&&(s.forward||[]).map((function(r){const[o,{preserveBehavior:i}]=e(r);u=t,o.split(".").map((function(e,r,o){var a;u=u[o[r]]=r+1<o.length?u[o[r]]||(a=o[r+1],n.includes(a)?[]:{}):(()=>{let e=null;if(i){const{methodOrProperty:n,thisObject:r}=((t,e)=>{let n=t;for(let t=0;t<e.length-1;t+=1)n=n[e[t]];return{thisObject:n,methodOrProperty:e.length>0?n[e[e.length-1]]:void 0}})(t,o);"function"==typeof n&&(e=(...t)=>n.apply(r,...t))}return function(){let n;return e&&(n=e(arguments)),(t._ptf=t._ptf||[]).push(o,arguments),n}})()}))})),"complete"==r.readyState?h():(t.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h))}(window,document,navigator,top,window.crossOriginIsolated);;(e=>{e.addEventListener("astro:before-swap",e=>{let r=document.body.querySelector("iframe[src*='/~partytown/']");if(r)e.newDocument.body.append(r)})})(document);</script>
94</head> <body class="antialiased text-default bg-page tracking-tight"> <header class="sticky bg-white dark:bg-slate-900 top-0 z-40 flex-none mx-auto w-full border-b border-gray-50/0 transition-[opacity] ease-in-out" data-aw-sticky-header="true" id="header"> <div class="absolute inset-0"></div> <div class="relative text-default py-1 px-3 md:px-6 mx-auto w-full md:flex md:items-center md:justify-between max-w-7xl"> <div class="flex justify-between md:min-w-[200px] lg:min-w-0 lg:flex-shrink-0"> <a class="flex items-center gap-2" href="/"> <img src="/_astro/speakprac-logo.FQuCDs0s_Z1DI9uN.webp" srcset="/_astro/speakprac-logo.FQuCDs0s_Z1DI9uN.webp 1x, /_astro/speakprac-logo.FQuCDs0s_Z1FEK2E.webp 2x" alt="SpeakPrac Logo" loading="eager" fetchpriority="high" decoding="async" width="31" height="40" class="h-auto"> <img src="/_astro/speakprac-text-logo.BQPCm0bx_17kdK8.webp" srcset="/_astro/speakprac-text-logo.BQPCm0bx_17kdK8.webp 1x, /_astro/speakprac-text-logo.BQPCm0bx_9kLxr.webp 2x" alt="SpeakPrac" loading="eager" fetchpriority="high" decoding="async" width="102" height="20" class="h-auto -mt-1.2"> </a> <div class="flex items-center md:hidden"> <button type="button" class="flex flex-col h-12 w-12 rounded justify-center items-center cursor-pointer group" aria-label="Toggle Menu" data-aw-toggle-menu> <span class="sr-only">Toggle Menu</span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:rotate-45 group-[.expanded]:translate-y-2.5"></span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:opacity-0"></span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:-rotate-45 group-[.expanded]:-translate-y-2.5"></span> </button> </div> </div> <nav class="items-center w-full lg:w-auto hidden lg:flex text-default overflow-y-auto lg:overflow-visible overflow-x-hidden lg:flex-1" aria-label="Main navigation"> <ul class="flex flex-col lg:flex-row lg:self-center w-full lg:w-auto text-xl lg:text-[0.9375rem] tracking-[0.01rem] font-medium lg:justify-center lg:space-x-6 xl:space-x-8 lg:mx-8"> <li class="relative group"> <a href="/ielts-speaking-course" class="hover:text-link dark:hover:text-white px-4 py-3 flex items-center whitespace-nowrap"> <span>IELTS Speaking Course</span> <span class="ml-2 text-white text-[10px] font-semibold leading-none px-1.5 py-0.5 rounded-sm bg-green-600"> FREE </span> </a> </li><li class="relative group"> <a href="/ielts-speaking-app" class="hover:text-link dark:hover:text-white px-4 py-3 flex items-center whitespace-nowrap"> <span>SpeakPrac App</span> <span class="ml-2 text-white text-[10px] font-semibold leading-none px-1.5 py-0.5 rounded-sm bg-blue-600"> AI </span> </a> </li><li class="js-dropdown relative group"> <div class="flex items-center"> <a href="/ielts-flashcards" class="hover:text-link dark:hover:text-white py-3 whitespace-nowrap pl-4 pr-1"> <span>IELTS Flashcards</span> </a> <button type="button" class="js-dropdown-toggle hover:text-link dark:hover:text-white pl-1 pr-4 py-3" aria-label="Toggle submenu"> <svg width="1em" height="1em" class="w-4 h-4 transition-transform duration-200 ease-in-out" data-icon="tabler:chevron-down"> <symbol id="ai:tabler:chevron-down" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 9l6 6l6-6"/></symbol><use href="#ai:tabler:chevron-down"></use> </svg> </button> </div> <ul class="sub-menu block mt-2 ml-4 lg:ml-0 pl-4 border-l-2 border-slate-200 dark:border-slate-700 lg:hidden lg:absolute lg:top-full lg:left-1/2 lg:-translate-x-1/2 lg:group-hover:block lg:mt-0 lg:pl-0 lg:border-l-0 lg:bg-white lg:dark:bg-slate-800 lg:shadow-lg lg:rounded-md lg:py-2 lg:z-50 lg:min-w-[240px] lg:border lg:border-gray-200 lg:dark:border-slate-700"> <li> <a href="/ielts-flashcards/bundle" class="w-full text-left px-4 py-2 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-slate-700 whitespace-nowrap"> <span class="flex-1">
94â Ultimate Bundle</span> </a> </li><li> <a href="/ielts-flashcards/pronunciation" class="w-full text-left px-4 py-2 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-slate-700 whitespace-nowrap"> <span class="flex-1">Pronunciation Flashcards</span> </a> </li><li> <a href="/ielts-flashcards/vocabulary" class="w-full text-left px-4 py-2 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-slate-700 whitespace-nowrap"> <span class="flex-1">Vocabulary Flashcards</span> </a> </li><li> <a href="/ielts-flashcards/grammar" class="w-full text-left px-4 py-2 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-slate-700 whitespace-nowrap"> <span class="flex-1">Grammar Flashcards</span> </a> </li> </ul> </li><li class="relative group"> <a href="/ielts-speaking-tips" class="hover:text-link dark:hover:text-white px-4 py-3 flex items-center whitespace-nowrap"> <span>Speaking Tips</span> </a> </li><li class="relative group"> <a href="/ielts-speaking-app" class="hover:text-link dark:hover:text-white px-4 py-3 flex items-center whitespace-nowrap text-white bg-primary hover:bg-secondary font-bold rounded-full shadow-md py-2.5 px-6 ml-4 self-center flex items-center leading-tight transition-colors duration-200"> <span>Get the App</span> </a> </li> </ul> </nav> <div class="hidden md:flex items-center justify-end lg:flex-shrink-0 md:p-0 md:min-w-[200px] lg:min-w-0"> <div class="hidden md:flex lg:hidden items-center"> <button type="button" class="flex flex-col h-12 w-12 rounded justify-center items-center cursor-pointer group" aria-label="Toggle Menu" data-aw-toggle-menu> <span class="sr-only">Toggle Menu</span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:rotate-45 group-[.expanded]:translate-y-2.5"></span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:opacity-0"></span> <span aria-hidden="true" class="h-0.5 w-6 my-1 rounded-full bg-black dark:bg-white transition ease transform duration-200 opacity-80 group-[.expanded]:-rotate-45 group-[.expanded]:-translate-y-2.5"></span> </button> </div> </div> </div> </header>
94<script> 95 function setupDropdowns() { 96 const dropdowns = document.querySelectorAll('.js-dropdown'); 97 98 document.addEventListener('click', (e) => { 99 if (window.innerWidth < 1024) return; 100 dropdowns.forEach((dropdown) => { 101 if (!dropdown.contains(e.target)) { 102 dropdown.classList.remove('is-open'); 103 const icon = dropdown.querySelector('.js-dropdown-toggle svg'); 104 icon?.classList.remove('rotate-180'); 105 } 106 }); 107 }); 108 109 dropdowns.forEach((dropdown) => { 110 const toggle = dropdown.querySelector('.js-dropdown-toggle'); 111 const submenu = dropdown.querySelector('.sub-menu'); 112 const icon = toggle?.querySelector('svg'); 113 114 if (!toggle || !submenu || !icon) return; 115 116 if (window.innerWidth < 1024) { 117 dropdown.classList.add('is-open'); 118 icon.classList.add('rotate-180'); 119 } 120 121 toggle.addEventListener('click', (e) => { 122 e.stopPropagation(); 123 124 const isCurrentlyOpen = dropdown.classList.contains('is-open'); 125 126 if (window.innerWidth >= 1024) { 127 document.querySelectorAll('.js-dropdown.is-open').forEach((d) => { 128 if (d !== dropdown) { 129 d.classList.remove('is-open'); 130 const otherIcon = d.querySelector('.js-dropdown-toggle svg'); 131 otherIcon?.classList.remove('rotate-180'); 132 } 133 }); 134 } 135 136 dropdown.classList.toggle('is-open', !isCurrentlyOpen); 137 icon.classList.toggle('rotate-180', !isCurrentlyOpen); 138 139 if (window.innerWidth < 1024) { 140 submenu.classList.toggle('hidden'); 141 } 142 }); 143 }); 144 } 145 146 document.addEventListener('DOMContentLoaded', setupDropdowns); 147 document.addEventListener('astro:after-swap', setupDropdowns); 148</script>
148 <main> <section class="relative md:-mt-[76px] not-prose"> <div class="absolute inset-0 pointer-events-none" aria-hidden="true"></div> <div class="relative max-w-7xl mx-auto px-4 sm:px-6"> <div class="pt-0 md:pt-[76px] pointer-events-none"></div> <div class="py-12 md:py-20 pb-8 md:pb-8"> <div class="text-center max-w-5xl mx-auto"> <p class="text-base text-secondary dark:text-blue-200 font-bold tracking-wide uppercase intersect-once intersect-quarter motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade"><span class='text-amber-500 font-semibold tracking-wider uppercase'>About The Founders</span></p> <h1 class="text-5xl md:text-6xl font-bold leading-tighter tracking-tighter mb-4 font-heading dark:text-gray-200 intersect-once intersect-quarter motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade">Hi, we're Matt & Phuong.</h1> <div class="max-w-3xl mx-auto"> <p class="text-xl text-muted mb-6 dark:text-slate-300 intersect-once intersect-quarter motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade">We built SpeakPrac because <strong>anyone can speak English with confidence</strong> â you just need the right system, the right tools, and the right practice.</p> <div class="max-w-xs sm:max-w-md m-auto flex flex-nowrap flex-col sm:flex-row sm:justify-center gap-4 intersect-once intersect-quarter motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade"> </div> </div> </div> </div> </div> </section> <section class="relative not-prose scroll-mt-[72px]"> <div class="absolute inset-0 pointer-events-none -z-[1]" aria-hidden="true"> <div class="absolute inset-0"> </div> </div> <div class="relative px-4 md:px-6 py-12 md:py-16 lg:py-20 text-default intersect-once intersect-quarter intersect-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade max-w-7xl mx-auto"> <div class="mx-auto max-w-7xl p-4 md:px-8"> <div class="md:flex md:flex-row-reverse md:gap-16"> <div class="md:basis-1/2 self-center"> <div class="mb-12 text-lg dark:text-slate-400"> <h2 class="text-2xl md:text-3xl font-bold font-heading mb-4"> 149My mission is to help you <br><span class="text-primary">achieve your target score.</span> </h2> <p class="text-muted text-lg mb-4"> 150I wasn't born a confident public speaker â or even in a native English speaking country. I was born in the Philippines and moved to Australia as a kid, making me a first-generation migrant. My family spoke Tagalog at home, and I had to actively work on my English. As a natural introvert, my brain often moved faster than my mouth, leading to overthinking and hesitation. 151</p> <p class="text-muted text-lg mb-4"> 152When I prepared for the IELTS speaking test, I realized that relying on "natural charm" wouldn't work for me. I needed <strong>systems</strong>. So, I developed frameworks like the Topic Diamond⢠and the A.R.E. Framework⢠to take the anxiety out of speaking. 153</p> <p class="text-muted text-lg"> 154It worked. I scored a perfect Band 9. Because I wanted to help others achieve the same, I became a <strong>Certified IELTS Teacher</strong> through IDP IELTS. Now, through the <strong>SpeakPrac Methodâ¢</strong>, I share those exact frameworks and AI practice tools to help you stop overthinking and start communicating. 155</p> </div> </div> <div aria-hidden="true" class="mt-10 md:mt-0 md:basis-1/2"> <div class="relative m-auto max-w-4xl"> <img src="/_astro/matt_sydney.C7na_4SA.webp" crossorigin="anonymous" referrerpolicy="no-referrer" width="500" height="500" srcset="/_astro/matt_sydney.C7na_4SA_Z27yC4J.webp 400w, /_astro/matt_sydney.C7na_4SA_Z1GMyeX.webp 768w" sizes="(max-width: 768px) 100vw, 432px" style="object-fit: cover; object-position: center; width: 100%; height: auto; aspect-ratio: 1;" *="true" CHANGED:="true" Removed="true" 'bg-gray-500'="true" from="true" class="mx-auto w-full rounded-lg shadow-lg" below="true" alt="Matthew Alberto in Sydney, Australia" loading="lazy" decoding="async"> </div> </div> </div> </div> </div> </section> <section class="relative not-prose scroll-mt-[72px]"> <div class="absolute inset-0 pointer-events-none -z-[1]" aria-hidden="true"> <div class="absolute inset-0"> </div> </div> <div class="relative px-4 md:px-6 py-12 md:py-16 lg:py-20 text-default intersect-once intersect-quarter intersect-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade pt-0 md:pt-0 max-w-6xl mx-auto"> <div class="grid sm:gap-y-8 sm:grid-cols-2 gap-4 md:gap-6"><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:certificate"> <symbol id="ai:tabler:certificate" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M12 15a3 3 0 1 0 6 0a3 3 0 1 0-6 0"/><path d="M13 17.5V22l2-1.5l2 1.5v-4.5"/><path d="M10 19H5a2 2 0 0 1-2-2V7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-1 1.73M6 9h12M6 12h3m-3 3h2"/></g></symbol><use href="#ai:tabler:certificate"></use> </svg><div class="text-xl font-bold">Verified Band 9 Speaker</div><p class="text-muted mt-2">I took the official IELTS test and achieved a perfect Band 9 in Speaking (including Band 9 in Fluency, Pronunciation, Vocabulary, and Grammar). I know exactly what examiners look for.</p></div><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:school"> <symbol id="ai:tabler:school" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M22 9L12 5L2 9l10 4zv6"/>
155<path d="M6 10.6V16a6 3 0 0 0 12 0v-5.4"/></g></symbol><use href="#ai:tabler:school"></use> </svg><div class="text-xl font-bold">Certified IELTS Teacher (IDP)</div><p class="text-muted mt-2">To ensure I provide the highest quality guidance, I completed the official <strong>IELTS Speaking - Teacher Training Program</strong> provided by <strong>IDP IELTS</strong> (Certificate Number: 68ae-6d3a-b8cc-b036). I combine proven teaching methodologies with my personal Band 9 experience.</p></div><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:globe"> <symbol id="ai:tabler:globe" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M7 9a4 4 0 1 0 8 0a4 4 0 0 0-8 0"/><path d="M5.75 15A8.015 8.015 0 1 0 15 2m-4 15v4m-4 0h8"/></g></symbol><use href="#ai:tabler:globe"></use> </svg><div class="text-xl font-bold">Global Educator</div><p class="text-muted mt-2">I studied at top universities in the UK and Australia (UCL, USYD, UNSW) and have taught English communication worldwide, including working alongside <a href="/documents/recommendation-letter-gabriel-wyner.pdf" target="_blank" rel="noopener noreferrer" class="text-amber-500 hover:text-amber-600 dark:text-amber-400 dark:hover:text-amber-300 underline font-medium transition-colors">Gabriel Wyner, bestselling author of Fluent Forever</a>.</p></div><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:device-mobile-code"> <symbol id="ai:tabler:device-mobile-code" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11.5 21H8a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8m2 8l2-2l-2-2m-3 0l-2 2l2 2M11 4h2m-1 13v.01"/></symbol><use href="#ai:tabler:device-mobile-code"></use> </svg><div class="text-xl font-bold">Founder of SpeakPrac</div><p class="text-muted mt-2">While preparing for my own IELTS exam, I built SpeakPrac as a personal AI speaking practice tool â because I couldn't find anything that gave me real, accurate feedback. After achieving Band 9, I wanted to help others do the same, so I decided to share it with the world.</p></div></div> </div> </section> <section class="relative not-prose scroll-mt-[72px]"> <div class="absolute inset-0 pointer-events-none -z-[1]" aria-hidden="true"> <div class="absolute inset-0 bg-white dark:bg-slate-900"></div> </div> <div class="relative mx-auto px-4 md:px-6 py-12 md:py-16 lg:py-20 text-default intersect-once intersect-quarter intersect-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade max-w-6xl"> <div class="grid md:grid-cols-2 gap-8 md:gap-12 items-center"> <!-- Left Column: Text Content --> <div class="text-center md:text-left"> <div class="mb-8 md:mx-auto md:mb-12 text-center md:text-left !mb-6"><p class="text-base text-secondary dark:text-blue-200 font-bold tracking-wide uppercase">A Creator & Teacher You Can Trust</p><h2 class="font-bold leading-tighter tracking-tighter font-heading text-heading text-3xl md:text-4xl">Built by a Verified Band 9 Speaker & Certified IELTS Teacher</h2></div> <p class="text-lg text-muted mb-4"> 156SpeakPrac is built on the proven, real-world strategies that earned me a perfect <strong class="text-amber-600 dark:text-amber-400">Band 9 in IELTS Speaking, including a Band 9 in all four marking criteria</strong>. 157</p> <p class="text-lg text-muted mb-6"> 158To ensure I provide the highest quality guidance, I am also a <strong>Certified IELTS Teacher</strong>, having completed the official IELTS Speaking - Teacher Training Program provided by <strong>IDP IELTS</strong> (Certificate Number: 68ae-6d3a-b8cc-b036). 159</p> <p class="text-muted"> 160Unlike other resources that make vague promises, I believe in complete transparency. Here's my official, verifiable result (TRF: <strong>25TW500157ALBM051G</strong>) and teaching certification. 161</p> </div> <!-- Right Column: Visual Proof --> <div class="flex flex-col items-center gap-6"> <div class="w-full max-w-md group hidden md:block"> <div class="aspect-video overflow-hidden rounded-lg shadow-lg transform transition-transform duration-300 group-hover:scale-105"> <img src="/_astro/matt-ieltscert.C7j7Ynb5_YIfIE.webp" srcset="/_astro/matt-ieltscert.C7j7Ynb5_1vN6Ff.webp 400w, /_astro/matt-ieltscert.C7j7Ynb5_YIfIE.webp 800w" alt="Matt, creator of SpeakPrac, holding his official IELTS Band 9 Certificate" sizes="(max-width: 768px) 90vw, 38vw" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="602" class="w-full h-full object-cover object-center"> </div> </div> <!-- START: TWO-COLUMN PROOF DASHBOARD --> <div class="text-center w-full">
161 <div class="bg-slate-100 dark:bg-slate-800 rounded-xl p-4 sm:p-5 shadow-lg w-full max-w-lg mx-auto border border-slate-200 dark:border-slate-700"> <div class="grid gap-1 items-center" style="grid-template-columns: 60% 40%;"> <!-- Dashboard Left: IELTS Scores --> <div class="flex flex-col items-center justify-center gap-3"> <img src="/_astro/matt_band9_speaking.DrzmZ3uk_Zx7Cpv.webp" alt="Official IELTS score showing Band 9 for Speaking" loading="lazy" decoding="async" fetchpriority="auto" width="180" height="84" class="h-10 sm:h-12 w-auto rounded-sm shadow-sm"> <img src="/_astro/matt_band9_ielts_breakdown.x-Y8fQrx_OLEon.webp" alt="IELTS Speaking score breakdown showing Band 9 in Fluency, Pronunciation, Vocabulary, and Grammar" loading="lazy" decoding="async" fetchpriority="auto" width="571" height="126" class="w-full max-w-[280px] h-auto rounded-sm shadow-sm"> <img src="/_astro/matt_trf_number.D_Ufd15A_Z1zaXlA.webp" alt="IELTS Test Report Form (TRF) number for verification" loading="lazy" decoding="async" fetchpriority="auto" width="465" height="70" class="h-8 sm:h-10 w-auto rounded-sm shadow-sm"> </div> <!-- Dashboard Right: Clickable IDP Certificate --> <div class="flex items-center justify-center h-full"> <a href="/_astro/Matthew's IELTS Speaking Teacher Training Program Certificate by IDP IELTS.CinZkFxK.webp" target="_blank" rel="noopener noreferrer" class="block group relative" title="Click to view full certificate"> <img src="/_astro/Matthew's%20IELTS%20Speaking%20Teacher%20Training%20Program%20Certificate%20by%20IDP%20IELTS.CinZkFxK_ZcbMUy.webp" alt="Matthew's IELTS Speaking Teacher Training Program Certificate by IDP IELTS" loading="lazy" decoding="async" fetchpriority="auto" width="1240" height="1754" class="w-full max-w-[160px] h-auto rounded-sm shadow-sm border border-slate-300 dark:border-slate-600 transition-opacity duration-200 group-hover:opacity-90"> <!-- Hover overlay hint icon --> <div class="absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-black/10 rounded-sm"> <div class="bg-black/60 text-white rounded-full p-2 backdrop-blur-sm shadow-lg"> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7"></path> </svg> </div> </div> </a> </div> </div> </div> <p class="text-xs sm:text-sm text-muted mt-3"> 162My Official Band 9 Score, Breakdown & IDP IELTS Teaching Certification 163</p> </div> <!-- END: TWO-COLUMN PROOF DASHBOARD --> </div> </div> </div> </section> <section class="py-12 md:py-16"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <!-- Full-width award photo --> <div class="mb-8 rounded-xl overflow-hidden"> <img src="/_astro/matthew_phuong_pride_of_australia.LjqHADp7.webp" alt="Phuong Nguyen (left) and Matthew Alberto (centre) receiving the Pride of Australia Medal, presented by Australian news presenter Sandra Sully" width="650" height="366" class="w-full h-auto object-contain" loading="lazy" decoding="async"> <p class="text-sm text-muted text-center mt-2 italic"> 164Phuong (left) and Matthew (center) accept the Pride of Australia Medal, presented by Sandra Sully â recognized nationally for building tech that helps real people. 165</p> </div> <!-- Text content below the photo --> <div class="max-w-3xl mx-auto"> <h2 class="text-2xl md:text-3xl font-bold font-heading mb-2"> 166Meet my co-founder,<br><span class="text-primary">Phuong Nguyen.</span> </h2> <p class="text-sm text-amber-500 font-semibold tracking-wider uppercase mb-4">CMO & COO · Co-founder</p> <p class="text-muted text-lg mb-4"> 167Phuong is Vietnamese-Australian â born in Australia to parents who arrived as Vietnamese refugees. Growing up, her parents couldn't speak English well, so she attended ESL classes outside school hours just to keep up, with no one at home to help her practice. She had to figure it out herself. Her parents still struggle with English today. That experience never left her, and it's a big reason SpeakPrac exists. 168</p> <p class="text-muted text-lg mb-4"> 169A <strong>UNSW Sydney graduate</strong>, Phuong leads operations and growth at SpeakPrac. Before this, she spent years as a facilitator with <strong><a href="https://franked.io" target="_blank" rel="noopener noreferrer" class="text-amber-500 hover:text-amber-600 dar
169k:text-amber-400 dark:hover:text-amber-300 underline font-medium transition-colors">FRANK Team</a></strong> â an Australian training organization that has equipped over 100,000 people with communication and leadership skills. Delivering workshops on public speaking, personal branding, and communication across high schools, universities, and corporations gave her a frontline understanding of what holds people back from speaking with confidence â and what actually helps them break through. 170</p> <p class="text-muted text-lg mb-4"> 171Phuong and I have been building together for over a decade. Our first project, <strong>PeoplePledge</strong> â Australia's first medical crowdfunding platform â was named a <strong>Top 100 SMART Innovation in Australia</strong> and earned us the <strong>Pride of Australia Medal</strong>, presented by news presenter Sandra Sully. 172</p> <p class="text-muted text-lg"> 173SpeakPrac is our next chapter, and we're building it with the same commitment. 174</p> </div> <!-- Phuong's credential cards --> <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6 mt-10 max-w-6xl mx-auto"> <div class="bg-white dark:bg-slate-800 rounded-xl p-6 shadow-sm border border-slate-100 dark:border-slate-700"> <div class="text-amber-500 mb-3"> <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 3.741-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5"></path> </svg> </div> <h3 class="font-semibold text-lg mb-1">UNSW Graduate</h3> <p class="text-muted text-sm">University of New South Wales, Sydney â one of Australia's leading research universities.</p> </div> <div class="bg-white dark:bg-slate-800 rounded-xl p-6 shadow-sm border border-slate-100 dark:border-slate-700"> <div class="text-amber-500 mb-3"> <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M16.5 18.75h-9m9 0a3 3 0 0 1 3 3h-15a3 3 0 0 1 3-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 0 1-.982-3.172M9.497 14.25a7.454 7.454 0 0 0 .981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 0 0 7.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 0 0 2.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 0 1 2.916.52 6.003 6.003 0 0 1-5.395 4.972m0 0a6.726 6.726 0 0 1-2.749 1.35m0 0a6.772 6.772 0 0 1-3.044 0"></path> </svg> </div> <h3 class="font-semibold text-lg mb-1">Pride of Australia Medal</h3> <p class="text-muted text-sm">National recognition for community impact through technology â awarded alongside Matthew for PeoplePledge.</p> </div> <div class="bg-white dark:bg-slate-800 rounded-xl p-6 shadow-sm border border-slate-100 dark:border-slate-700"> <div class="text-amber-500 mb-3"> <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0 1 16.5 7.605"></path> </svg> </div> <h3 class="font-semibold text-lg mb-1">10+ Years Building Together</h3> <p class="text-muted text-sm">Co-founded Australia's first medical crowdfunding platform, named a Top 100 SMART Innovation in Australia.</p> </div> <div class="bg-white dark:bg-slate-800 rounded-xl p-6 shadow-sm border border-slate-100 dar
174k:border-slate-700"> <div class="text-amber-500 mb-3"> <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z"></path> </svg> </div> <h3 class="font-semibold text-lg mb-1">Communication & Leadership Trainer</h3> <p class="text-muted text-sm">Facilitated workshops for 1000s of people across schools, universities, and corporations with FRANK Team â covering public speaking, communication skills, and personal branding.</p> </div> </div> </div> </section> <section class="relative not-prose scroll-mt-[72px]"> <div class="absolute inset-0 pointer-events-none -z-[1]" aria-hidden="true"> <div class="absolute inset-0"> </div> </div> <div class="relative px-4 md:px-6 py-12 md:py-16 lg:py-20 text-default intersect-once intersect-quarter intersect-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade max-w-7xl mx-auto"> <div class="mb-8 md:mx-auto md:mb-12 text-center max-w-3xl"><h2 class="font-bold leading-tighter tracking-tighter font-heading text-heading text-3xl md:text-4xl">How We Can Help You Reach Band 9</h2><p class="mt-4 text-muted text-xl">The SpeakPrac ecosystem gives you everything you need: Strategy, Input, and Output.</p></div> <div class="grid sm:gap-y-8 lg:grid-cols-3 sm:grid-cols-2 gap-4 md:gap-6"><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:video"> <symbol id="ai:tabler:video" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m15 10l4.553-2.276A1 1 0 0 1 21 8.618v6.764a1 1 0 0 1-1.447.894L15 14zM3 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></symbol><use href="#ai:tabler:video"></use> </svg><div class="text-xl font-bold">1. The Free Course (Strategy)</div><p class="text-muted mt-2">Master the test format and learn the exact frameworks (A.R.E, Topic Diamond, I.D.E.A) that examiners reward.</p><div class="mt-2"><a class="btn-primary" href="/ielts-speaking-course">Watch Course</a></div></div><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:cards"> <symbol id="ai:tabler:cards" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m3.604 7.197l7.138-3.109a.96.96 0 0 1 1.27.527l4.924 11.902a1 1 0 0 1-.514 1.304L9.285 20.93a.96.96 0 0 1-1.271-.527L3.09 8.5a1 1 0 0 1 .514-1.304zM15 4h1a1 1 0 0 1 1 1v3.5M20 6q.396.168.768.315a1 1 0 0 1 .53 1.311L19 13"/></symbol><use href="#ai:tabler:cards"></use> </svg><div class="text-xl font-bold">2. Anki Flashcards (Input)</div><p class="text-muted mt-2">Build muscle memory for clear pronunciation, advanced vocabulary, and complex grammar using spaced repetition.</p><div class="mt-2"><a class="btn-primary" href="/ielts-flashcards">Get Flashcards</a></div></div><div class="relative flex flex-col intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade rounded-lg shadow-[0_4px_30px_rgba(0,0,0,0.1)] dark:shadow-[0_4px_30px_rgba(0,0,0,0.1)] backdrop-blur border border-[#ffffff29] bg-white dark:bg-slate-900 p-6"><svg width="1em" height="1em" class="w-12 h-12 mb-6 text-primary" data-icon="tabler:device-mobile"> <symbol id="ai:tabler:device-mobile" viewBox="0 0 24 24">
174<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm5-1h2m-1 13v.01"/></symbol><use href="#ai:tabler:device-mobile"></use> </svg><div class="text-xl font-bold">3. SpeakPrac App (Output)</div><p class="text-muted mt-2">Practice your frameworks under exam pressure and get instant AI feedback on your fluency, grammar, and vocabulary.</p><div class="mt-2"><a class="btn-primary" href="/ielts-speaking-app">Try the App</a></div></div></div> </div> </section> <section class="bg-orange-50 dark:bg-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16 md:py-20"> <div class="grid md:grid-cols-2 gap-8 md:gap-12 items-center"> <!-- Content & Form Column --> <div class="text-center md:text-left order-last md:order-first"> <h2 class="text-3xl md:text-4xl font-bold font-heading mb-4 text-heading"> 175Get Free IELTS Speaking Tips 176</h2> <p class="text-lg text-muted mb-8"> 177Get <strong class="text-amber-600 dark:text-amber-400">proven strategies from a Band 9 Speaker</strong> to boost your IELTS Speaking score. Join my newsletter for free tips and resources. Unsubscribe anytime. 178</p> <!-- This div is the target for the Klaviyo script to inject the form into. --><div class="klaviyo-form-VL4Jnx"></div> </div> <!-- Image Column --> <div class="text-center md:text-left"> <img src="/_astro/matt_teaching.D_IaUFWs_Z2tHjyb.webp" srcset="/_astro/matt_teaching.D_IaUFWs_Z2o7myU.webp 200w, /_astro/matt_teaching.D_IaUFWs_ZxGIXc.webp 400w, /_astro/matt_teaching.D_IaUFWs_Z2tHjyb.webp 500w" UPDATED:="true" Changed="true" the="true" image="true" source="true" alt="true" text="true" for="true" accuracy="true" and="true" accessibility="true" sizes="(max-width: 768px) 100vw, 500px" loading="lazy" decoding="async" fetchpriority="auto" width="500" height="300" class="rounded-lg shadow-lg mx-auto"> </div> </div> </div> </section> </main> <footer class="relative border-t border-gray-200 dark:border-slate-800 not-prose"> <div class="dark:bg-dark absolute inset-0 pointer-events-none" aria-hidden="true"></div> <div class="relative max-w-7xl mx-auto px-4 sm:px-6 dark:text-slate-300 intersect-once intersect-quarter intercept-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade"> <div class="grid grid-cols-12 gap-4 gap-y-8 sm:gap-8 py-8 md:py-12"> <div class="col-span-12 lg:col-span-4"> <div class="mb-2"> <a class="inline-block font-bold text-xl" href="/">SpeakPrac</a> </div> <div class="text-sm text-muted flex gap-1"> <a class="text-muted hover:text-gray-700 dark:text-gray-400 hover:underline transition duration-150 ease-in-out" href="/terms">Terms</a> · <a class="text-muted hover:text-gray-700 dark:text-gray-400 hover:underline transition duration-150 ease-in-out" href="/privacy">Privacy Policy</a> · <a class="text-muted hover:text-gray-700 dark:text-gray-400 hover:underline transition duration-150 ease-in-out" href="/data-deletion">Data Deletion</a> </div> </div> <div class="col-span-6 md:col-span-3 lg:col-span-2"> <div class="dark:text-gray-300 font-medium mb-2">SpeakPrac App</div> <ul class="text-sm"> <li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-app"> Get Android App </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ios-waitlist"> Join iOS Waitlist </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-app#features"> App Features </a> </li> </ul> </div><div class="col-span-6 md:col-span-3 lg:col-span-2"> <div class="dark:text-gray-300 font-medium mb-2">IELTS Flashcards</div> <ul class="text-sm"> <li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-flashcards"> All Flashcards </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-flashcards/bundle"> Ultimate Bundle </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-flashcards/pronunciation"> Pronunciation Flashcards </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-flashcards/vocabulary"> Vocabulary Flashcards </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-flashcards/grammar"> Grammar Flashcards </a> </li> </ul> </div><div class="col-span-6 md:col-span-3 lg:col-span-2"> <div class="dark:text-gray-300 font-medium mb-2">SpeakPrac Methodâ¢</div> <ul class="text-sm"> <li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-course"> Free Video Course </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-course/part-1"> Part 1: A.R.E. Framework⢠</a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-course/part-2"> Part 2: Topic Diamond⢠</a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-course/part-3"> Part 3: I.D.E.A. Framework⢠</a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-course/marking-criteria"> Marking Criteria Explained </a> </li> </ul> </div><div class="col-span-6 md:col-span-3 lg:col-span-2"> <div class="dark:text-gray-300 font-medium mb-2">Connect & Learn</div> <ul class="text-sm"> <li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/about"> About Us </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="https://www.youtube.com/@MatthewAlberto"> YouTube Channel </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-tips"> IELTS Speaking Tips (Blog) </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/ielts-speaking-faqs"> IELTS Speaking FAQs </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/newsletter"> Join the Newsletter </a> </li><li class="mb-2"> <a class="text-muted hover:text-gray-700 hover:underline dark:text-gray-400 transition duration-150 ease-in-out" href="/contact"> Contact Support </a> </li> </ul> </div> </div> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0 rtl:ml-0 rtl:-mr-2 rtl:md:ml-0 rtl:md:mr-4"> <li> <a class="text-muted dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="YouTube" href="https://www.youtube.com/@MatthewAlberto"> <svg width="1em" height="1em" class="w-5 h-5" data-icon="tabler:brand-youtube"> <symbol id="ai:tabler:brand-youtube" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M2 8a4 4 0 0 1 4-4h12a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4z"/><path d="m10 9l5 3l-5 3z"/></g></symbol><use href="#ai:tabler:brand-youtube"></use> </svg> </a> </li><li> <a class="text-muted dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/matthewalberto"> <svg width="1em" height="1em" class="w-5 h-5" data-icon="tabler:brand-linkedin">
178 <symbol id="ai:tabler:brand-linkedin" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M8 11v5m0-8v.01M12 16v-5m4 5v-3a2 2 0 1 0-4 0"/><path d="M3 7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4z"/></g></symbol><use href="#ai:tabler:brand-linkedin"></use> </svg> </a> </li><li> <a class="text-muted dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Email" href="mailto:[email protected]"> <svg width="1em" height="1em" class="w-5 h-5" data-icon="tabler:mail"> <symbol id="ai:tabler:mail" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="m3 7l9 6l9-6"/></g></symbol><use href="#ai:tabler:mail"></use> </svg> </a> </li> </ul> <div class="text-sm mr-4 dark:text-muted"> 179 <span class="w-full md:w-auto text-center md:text-left"> 180 © 2026 SpeakPrac. All rights reserved. 181 </span> 182 </div> </div> </div> </footer>
182<script>(function(){const defaultTheme = "light"; 183 184 if (window.basic_script) { 185 return; 186 } 187 188 window.basic_script = true; 189 190 function applyTheme(theme) { 191 if (theme === 'dark') { 192 document.documentElement.classList.add('dark'); 193 } else { 194 document.documentElement.classList.remove('dark'); 195 } 196 } 197 198 const initTheme = function () { 199 if ((defaultTheme && defaultTheme.endsWith(':only')) || (!localStorage.theme && defaultTheme !== 'system')) { 200 applyTheme(defaultTheme.replace(':only', '')); 201 } else if ( 202 localStorage.theme === 'dark' || 203 (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) 204 ) { 205 applyTheme('dark'); 206 } else { 207 applyTheme('light'); 208 } 209 }; 210 initTheme(); 211 212 function attachEvent(selector, event, fn) { 213 const matches = typeof selector === 'string' ? document.querySelectorAll(selector) : selector; 214 if (matches && matches.length) { 215 matches.forEach((elem) => { 216 elem.addEventListener(event, (e) => fn(e, elem), false); 217 }); 218 } 219 } 220 221 const onLoad = function () { 222 let lastKnownScrollPosition = window.scrollY; 223 let ticking = true; 224 225 attachEvent('#header nav', 'click', function () { 226 document.querySelector('[data-aw-toggle-menu]')?.classList.remove('expanded'); 227 document.body.classList.remove('overflow-hidden'); 228 document.getElementById('header')?.classList.remove('h-screen'); 229 document.getElementById('header')?.classList.remove('expanded'); 230 document.getElementById('header')?.classList.remove('bg-page'); 231 document.querySelector('#header nav')?.classList.add('hidden'); 232 document.querySelector('#header > div > div:last-child')?.classList.add('hidden'); 233 }); 234 235 attachEvent('[data-aw-toggle-menu]', 'click', function (_, elem) { 236 elem.classList.toggle('expanded'); 237 document.body.classList.toggle('overflow-hidden'); 238 document.getElementById('header')?.classList.toggle('h-screen'); 239 document.getElementById('header')?.classList.toggle('expanded'); 240 document.getElementById('header')?.classList.toggle('bg-page'); 241 document.querySelector('#header nav')?.classList.toggle('hidden'); 242 document.querySelector('#header > div > div:last-child')?.classList.toggle('hidden'); 243 }); 244 245 attachEvent('[data-aw-toggle-color-scheme]', 'click', function () { 246 if (defaultTheme.endsWith(':only')) { 247 return; 248 } 249 document.documentElement.classList.toggle('dark'); 250 localStorage.theme = document.documentElement.classList.contains('dark') ? 'dark' : 'light'; 251 }); 252 253 attachEvent('[data-aw-social-share]', 'click', function (_, elem) { 254 const network = elem.getAttribute('data-aw-social-share'); 255 const url = encodeURIComponent(elem.getAttribute('data-aw-url')); 256 const text = encodeURIComponent(elem.getAttribute('data-aw-text')); 257 258 let href; 259 switch (network) { 260 case 'facebook': 261 href = `https://www.facebook.com/sharer.php?u=${url}`; 262 break; 263 case 'twitter': 264 href = `https://twitter.com/intent/tweet?url=${url}&text=${text}`; 265 break; 266 case 'linkedin': 267 href = `https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${text}`; 268 break; 269 case 'whatsapp': 270 href = `https://wa.me/?text=${text}%20${url}`; 271 break; 272 case 'mail': 273 href = `mailto:?subject=%22${text}%22&body=${text}%20${url}`; 274 break; 275 276 default: 277 return; 278 } 279 280 const newlink = document.createElement('a'); 281 newlink.target = '_blank'; 282 newlink.href = href; 283 newlink.click(); 284 }); 285 286 const screenSize = window.matchMedia('(max-width: 767px)'); 287 screenSize.addEventListener('change', function () { 288 document.querySelector('[data-aw-toggle-menu]')?.classList.remove('expanded'); 289 document.body.classList.remove('overflow-hidden'); 290 document.getElementById('header')?.classList.remove('h-screen'); 291 document.getElementById('header')?.classList.remove('expanded'); 292 document.getElementById('header')?.classList.remove('bg-page'); 293 document.querySelector('#header nav')?.classList.add('hidden'); 294 document.querySelector('#header > div > div:last-child')?.classList.add('hidden'); 295 }); 296 297 function applyHeaderStylesOnScroll() { 298 const header = document.querySelector('#header[data-aw-sticky-header]'); 299 if (!header) return; 300 if (lastKnownScrollPosition > 60 && !header.classList.contains('scroll')) { 301 header.classList.add('scroll'); 302 } else if (lastKnownScrollPosition <= 60 && header.classList.contains('scroll')) { 303 header.classList.remove('scroll'); 304 } 305 ticking = false;
306 } 307 applyHeaderStylesOnScroll(); 308 309 attachEvent([document], 'scroll', function () { 310 lastKnownScrollPosition = window.scrollY; 311 312 if (!ticking) { 313 window.requestAnimationFrame(() => { 314 applyHeaderStylesOnScroll(); 315 }); 316 ticking = true; 317 } 318 }); 319 }; 320 const onPageShow = function () { 321 document.documentElement.classList.add('motion-safe:scroll-smooth'); 322 const elem = document.querySelector('[data-aw-toggle-menu]'); 323 if (elem) { 324 elem.classList.remove('expanded'); 325 } 326 document.body.classList.remove('overflow-hidden'); 327 document.getElementById('header')?.classList.remove('h-screen'); 328 document.getElementById('header')?.classList.remove('expanded'); 329 document.querySelector('#header nav')?.classList.add('hidden'); 330 }; 331 332 window.onload = onLoad; 333 window.onpageshow = onPageShow; 334 335 document.addEventListener('astro:after-swap', () => { 336 initTheme(); 337 onLoad(); 338 onPageShow(); 339 }); 340})();</script>
340
340<script> 341 /* Inspired by: https://github.com/heidkaemper/tailwindcss-intersect */ 342 const Observer = { 343 observer: null, 344 delayBetweenAnimations: 100, 345 animationCounter: 0, 346 347 start() { 348 const selectors = [ 349 '[class*=" intersect:"]', 350 '[class*=":intersect:"]', 351 '[class^="intersect:"]', 352 '[class="intersect"]', 353 '[class*=" intersect "]', 354 '[class^="intersect "]', 355 '[class$=" intersect"]', 356 ]; 357 358 const elements = Array.from(document.querySelectorAll(selectors.join(','))); 359 360 const getThreshold = (element) => { 361 if (element.classList.contains('intersect-full')) return 0.99; 362 if (element.classList.contains('intersect-half')) return 0.5; 363 if (element.classList.contains('intersect-quarter')) return 0.25; 364 return 0; 365 }; 366 367 elements.forEach((el) => { 368 el.setAttribute('no-intersect', ''); 369 el._intersectionThreshold = getThreshold(el); 370 }); 371 372 const callback = (entries) => { 373 entries.forEach((entry) => { 374 requestAnimationFrame(() => { 375 const target = entry.target; 376 const intersectionRatio = entry.intersectionRatio; 377 const threshold = target._intersectionThreshold; 378 379 if (target.classList.contains('intersect-no-queue')) { 380 if (entry.isIntersecting) { 381 target.removeAttribute('no-intersect'); 382 if (target.classList.contains('intersect-once')) { 383 this.observer.unobserve(target); 384 } 385 } else { 386 target.setAttribute('no-intersect', ''); 387 } 388 return; 389 } 390 391 if (intersectionRatio >= threshold) { 392 if (!target.hasAttribute('data-animated')) { 393 target.removeAttribute('no-intersect'); 394 target.setAttribute('data-animated', 'true'); 395 396 const delay = this.animationCounter * this.delayBetweenAnimations; 397 this.animationCounter++; 398 399 target.style.transitionDelay = `${delay}ms`; 400 target.style.animationDelay = `${delay}ms`; 401 402 if (target.classList.contains('intersect-once')) { 403 this.observer.unobserve(target); 404 } 405 } 406 } else { 407 target.setAttribute('no-intersect', ''); 408 target.removeAttribute('data-animated'); 409 target.style.transitionDelay = ''; 410 target.style.animationDelay = ''; 411 412 this.animationCounter = 0; 413 } 414 }); 415 }); 416 }; 417 418 this.observer = new IntersectionObserver(callback.bind(this), { threshold: [0, 0.25, 0.5, 0.99] }); 419 420 elements.forEach((el) => { 421 this.observer.observe(el); 422 }); 423 }, 424 }; 425 426 Observer.start(); 427 428 document.addEventListener('astro:after-swap', () => { 429 Observer.start(); 430 }); 431</script>
431 <!-- Klaviyo Onsite Tracking -->
431<script async src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=VNZFNF"></script>
431
431<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"40757b50c9ab4cd2ad615698257f0c1b","r":1,"spa":2}' crossorigin="anonymous"></script>
431 432</body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.