With AI - Product development is still hard. The real difference lies after the launch date

With AI - Product development is still hard. The real difference lies after the launch date

I completely agree with a simple argument: the technical barriers to making a product have collapsed, but the difficulty hasn't disappeared, it has just shifted elsewhere. It has moved from "can you build it" to "can the product survive with it after launch."

I completely agree with a simple argument: the technical barriers to making a product have collapsed, but the difficulty hasn't disappeared, it has just shifted elsewhere. It has moved from "can you build it" to "can the product survive with it after launch."

Nguyen Tan Toan - Product Design

Toan Nguyen

Aug 24, 2026

Nguyen Tan Toan - Product Design

Toan Nguyen

Aug 24, 2026

Nguyen Tan Toan - Product Design

Toan Nguyen

Aug 24, 2026

Share:

AI Native Designer – UX UI Product Designer multitask cùng AI trong không gian trừu tượng tông xanh, thể hiện sự chuyển đổi quy trình thiết kế truyền thống sang workflow AI-native. Artwork gắn với góc nhìn thiết kế của Nguyen Tan Toan về kỷ nguyên thiết kế mới.

The barriers have truly collapsed... but how far?

The term "Vibe Coding" was born from a post by Andrej Karpathy on X in February 2025, where he described it as a state of "completely surrendering to the vibe, accepting the exponential acceleration of app development, and forgetting that code even exists." Less than two years later, Karpathy himself was the first to walk back his term: in April 2026, at Sequoia Capital's AI Ascent event, he declared Vibe Coding obsolete, replacing it with the concept of "agentic engineering," a discipline far more difficult than the initial "relax, type a few sentences, and you're done" image. By December 2025, he admitted that 80% of his code was generated by AI, but that was the result of a tight control process, not the "accept all changes without looking" style of the original definition.

This highlights something crucial: even the creator of the term went from "doing it for fun, discarding the project afterward is fine" to "a truly disciplined working methodology" in just 14 months. If insiders have to adjust that quickly, then the narrative of "one idea, one AI account, a few-dollar server is enough to launch a product" currently spreading widely in the community is only true during the "0 to 1" phase (from nothing to a formed product). It says nothing about whether that product can survive.

Infographic của Nguyentantoan giải thích vì sao AI product thất bại sau ngày ra mắt – hiệu suất giảm dần khi thiếu User Feedback và Case Library, không có phiên bản 2.0 – bài học phát triển sản phẩm AI từ Videcode

Why "building a product" is no longer a victory

Data on startup failures reveals a striking, though not new, pattern. According to an analysis by CB Insights of hundreds of post-mortems written by the founders themselves, the most frequently cited reason at 42% is "no market need," far ahead of the second-place reason, "ran out of money" (29%). This figure has been consistently cited by multiple independent research organizations for years.

What is worth noting is that this 42% was measured across startups in general, from before the era of Vibe Coding. This means that even when "building a product" used to take a lot of effort, money, and time, the most common cause of failure was still not in the product development phase. Now that this barrier has almost vanished, intuition suggests that the share of the "no one needs it" reason will grow even larger because the very things that used to make people think twice before starting (cost, time) no longer act as natural filters. Anyone can build a prototype in an afternoon, even when no one has asked if it is actually needed.

Launching for the first time is the peak of the product; many Vibe Coding products have dense commit graphs during their launch week, followed by complete silence. This is not because the authors are lazy or incompetent. The problem is that no one teaches them what to do after the product runs; all existing AI product tutorials stop right at the moment of launch.

Why AI products have no concept of "done"

This is the difference between AI products and traditional products. Traditional software has hardcoded behavior: you write if-else, and it runs exactly like that a million times in a row. AI products are different; their behavior is the result of sampling from a probability distribution at runtime. That distribution shifts constantly: as the way users ask questions changes, as the knowledge base changes, and most importantly, as the model provider silently updates the AI model you are using.

This is not speculation. A study by scientists at Stanford and UC Berkeley (Chen, Zaharia, Zou - "How Is ChatGPT's Behavior Changing over Time?", 2023) measured this phenomenon directly by comparing the same model version called via API at two points three months apart. The results were startling: GPT-4's accuracy in identifying whether a number is prime dropped from about 84% (March 2023) to about 51% just three months later, because the model stopped following the chain-of-thought reasoning pattern as before. The percentage of executable code generated by GPT-4 also dropped sharply, partly because the model began automatically adding triple backticks before and after the code block—a minor formatting change but enough to cause syntax errors across systems automating that code execution. The research team called this phenomenon proof that the behavior of "the same" LLM service can change significantly in a short period and concluded that continuous monitoring is a must, not an option.

In other words: even if you do not touch a single line of your Prompt, your product can still "break" over time, simply because the model provider updated things behind your back. This is why the concept of "AI product completed, packaged, and handed over" which holds true for traditional software, does not apply here.

5 loại thất bại phổ biến và 3 cách khắc phục khi làm AI product – Nguyentantoan phân tích Structural Fixes, Prompt Solutions và Signal & Capability cho đội ngũ phát triển sản phẩm AI tại Videcode

Three tasks that take place after launch day

These three tasks are not done sequentially but rather in parallel, all at the same time.

1. Tracking: Turning user behavior into meaningful data

The most common mistake: waiting for the "dislike" button. The percentage of users who proactively click this button is so low that it is statistically insignificant—the first reaction of a frustrated user is not to leave a rating, but to close the tab. The truly valuable signals are all passive, unintentional ones:

Don't wait for "Like / Dislike" or "Rate this app" buttons. The rate of users proactively clicking these is statistically insignificant; frustrated users will just close the tab and leave, rather than sit there rating your app. If you want to know where things aren't working, look for these 4 signs:

  • Re-asking: The user changes their phrasing to ask the exact same question again. This is the strongest signal of failure because it is completely unconscious.

  • Rewriting: The user breaks down the question, adds detailed conditions, etc., indicating the initial answer was too generic.

  • Abandoning mid-flow: The user abruptly closes the tab while in the middle of an app flow or during generation.

  • Result utilization: Did they download the result? Was the answer copied to be used elsewhere? No matter how smart or advanced your system is, if the results aren't being used, it's useless.

The classification of failures must be by root cause, not by feature module. This is a fundamental difference from traditional software QA, because the exact same symptom (an incorrect answer) can be caused by five completely different reasons: Prompt error, retrieval error (retrieval failing to find the right document), truncated context, actual model capability limits, or most importantly, this is not an error, but the user telling you what feature the product should add next.

Every error that arises must be turned into a reproducible test case to isolate the issue: what is the input, what is the expected behavior, what are the evaluation criteria. By doing this step, a few hundred accumulated cases become a private benchmark—something no competitor can copy, because it is an accumulation over time: if they start today, they will still need three months to catch up with the data you have today.

2. Iteration: Knowing when to fix, and to what extent

The most common mistake: Fixing Prompts on a "case-by-case" basis. By the 30th fix, the Prompt becomes a two-thousand-word document where you don't dare delete a single line because you don't know which line is actually doing the work. The rule to keep: only fix when a group of error causes accumulates enough volume to confirm it is a common pattern, do not fix for a single isolated case.

And before fixing, distinguish between 2 types of issues:

  • Fixable by Prompt: Issues with phrasing, formatting, or tone. Meaning the AI knows how to do it, it just hasn't done it the way you wanted.

  • Not fixable by Prompt: Needs new tools, needs to be broken down into steps, needs additional lookup sources, or needs human intervention. Meaning the AI simply lacks the information or capability to do it alone in one go.

A simple self-test: if you have to write a long explanatory paragraph in the Prompt to "teach" the model a workflow or reasoning process, it is almost certainly a structural problem, not a Prompt problem.

3. Model: Monitoring whether the background AI changes on its own

This is the easiest task to overlook because, as cited above, model behavior can change even when you do nothing. The product can still randomly "break" over time simply because the AI provider silently updates the model.

Therefore, the test suite you gathered in step 1 should not only run when you modify something—it should run periodically, even when nothing changes, to detect early if anything has shifted unexpectedly.

When considering switching models, what matters is not the score on public leaderboards (generic benchmarks measure general capability, not capability in your specific use case), but performance on your own private test suite—and especially looking at where the behavioral variance lies, because a new model might be stronger overall but weaker in the exact use case most critical to you.

"Technical Debt" as Vibe Coding explodes at this stage

This is the most worrying aspect for solo product builders.

Veracode's GenAI Code Security Report 2025, which analyzed 80 standardized programming tasks across more than 100 large language models, showed that AI chose to write insecure code in 45% of cases when given a choice between secure and insecure methods. More worryingly, this security performance did not improve over time despite new models consistently generating more syntactically and logically correct code. Veracode's Chief Technology Officer, Jens Wessling, put it bluntly: the nature of Vibe Coding, where developers outsource to AI without explicitly specifying security requirements, means leaving the model to decide for them, and the model chooses incorrectly nearly half the time.

In other words: when first building the product, the AI writes code for you; you read and understand each line, but you don't understand why it wrote it that way. Everything is fine until real users hit bugs, and you open the code to fix it only to realize you don't know where to start, and you might be sitting on a security vulnerability you are completely unaware of.

What in your AI product is impossible to copy?

The test: Take a screenshot of your product, show it to someone in the same industry. How much of it can they copy?

The truth is: almost everything visible can be copied. How you prompt the AI can be reverse-engineered with a few clever queries—a trick everyone knows. How your product works internally (how many steps it takes, what tools it calls) can be figured out by an expert in less than half a day. Anyone can call AI models via API. The interface can be copied with a few lines of code.

Mô hình tảng băng chìm trong phát triển AI product – Nguyentantoan chỉ ra Prompt, Agent Framework, Model, UI chỉ là bề nổi, còn Case Library và Iteration Speed mới là yếu tố quyết định thành công – phân tích chuyên sâu từ Videcode

Only two things are not in that screenshot, and they are also the only two things that cannot be copied:

  1. Your own data repository, real conversations, in the exact language of real users, in your specific use case. It is context-specific and accumulated over time: if competitors start accumulating today, they will still need the exact amount of time you spent to catch up with the data you have now.

  2. Operational speed: not hard work, but a mechanism. A team with three parallel workflows detecting issues automatically, classifying root causes, and identifying automated fixes—a loop that can be shrunk to one day. A team without a system: waiting for user complaints, guessing the cause, typing a few prompts to see if the bug is gone, leading to a fix cycle that takes a whole week and might not even fix the right thing. A difference of 1 week versus 1 day, run over a year, is a massive gap in the number of fixes deployed. And this has a compound interest effect: each fix not only resolves one bug but also adds experience and information to the data repository, making the next fix even faster.

So what about tech giants? Plenty of people, plenty of money, their own proprietary models—surely their self-patching, self-developing loop is even faster? The answer: fixing speed does not depend on how many people or how much money you have, but on how short the path is from detecting an error to fixing it.

Big companies are great at making AI more powerful and tools more abundant; that is their general strength. But your users will ask very specific questions unique to your product; big companies don't have that information because those are not their clients. For a small team like yours: see a bug in the morning, fix it by noon, deploy it the same day. A big company doing the same task would have to go through document approvals, modular testing, and coordination across multiple teams, taking several days.

So the moat does not lie in being better than a big company in general, but in moving faster than anyone else in your specific niche. But this is only true when you actually do the 3 tasks above, not with a "launch first, figure it out later" approach. Logging user behavior, building test suites, classifying error causes—must be done right from the beginning. If you leave it for later, 3 months of the most valuable data will be lost, or poorly logged and unusable.

Proving capability in the AI era

Writing "I built an AI product" on a resume no longer impresses anyone. Because AI has made building a demo so easy, everyone has one to talk about.

The real question that separates the levels is: after launching, how many versions have you iterated through, and why each time?

The person who can answer this will tell a story: the third version was because we noticed a group of users repeatedly asking the same thing; upon tracing the root cause, we found retrieval failed to fetch the correct document, so we added a query rewriting layer, dropping the re-ask rate from X% to Y%.

The beauty of this: you do not need a massive product to gain truly valuable experience. A product with only 100 users, but where you closely follow those 100 people, listen and iterate continuously for 6 months, will give you far more experience than someone who built 10 demos and abandoned them all, none of them going anywhere.

Conclusion

Your product launch post is not the finish line, but only the starting point.

The important question is not "what product have you built." It is: when will you write your second post, the one that says "After 3 months of listening to real users, here is what I have updated"?

References

  • Andrej Karpathy, original post about "vibe coding" on X, February 2025; and speech at the AI Ascent event (Sequoia Capital), April 2026 on the successor concept "agentic engineering".

  • CB Insights, analysis of startup failure causes based on founder-published post-mortems—"no market need" accounts for 42%, leading the list.

  • Lingjiao Chen, Matei Zaharia, James Zou (Stanford University, UC Berkeley), "How Is ChatGPT's Behavior Changing over Time?", arXiv:2307.09009, 2023.

  • Veracode, 2025 GenAI Code Security Report - analysis of 80 programming tasks across more than 100 large language models, published July 30, 2025.

The barriers have truly collapsed... but how far?

The term "Vibe Coding" was born from a post by Andrej Karpathy on X in February 2025, where he described it as a state of "completely surrendering to the vibe, accepting the exponential acceleration of app development, and forgetting that code even exists." Less than two years later, Karpathy himself was the first to walk back his term: in April 2026, at Sequoia Capital's AI Ascent event, he declared Vibe Coding obsolete, replacing it with the concept of "agentic engineering," a discipline far more difficult than the initial "relax, type a few sentences, and you're done" image. By December 2025, he admitted that 80% of his code was generated by AI, but that was the result of a tight control process, not the "accept all changes without looking" style of the original definition.

This highlights something crucial: even the creator of the term went from "doing it for fun, discarding the project afterward is fine" to "a truly disciplined working methodology" in just 14 months. If insiders have to adjust that quickly, then the narrative of "one idea, one AI account, a few-dollar server is enough to launch a product" currently spreading widely in the community is only true during the "0 to 1" phase (from nothing to a formed product). It says nothing about whether that product can survive.

Infographic của Nguyentantoan giải thích vì sao AI product thất bại sau ngày ra mắt – hiệu suất giảm dần khi thiếu User Feedback và Case Library, không có phiên bản 2.0 – bài học phát triển sản phẩm AI từ Videcode

Why "building a product" is no longer a victory

Data on startup failures reveals a striking, though not new, pattern. According to an analysis by CB Insights of hundreds of post-mortems written by the founders themselves, the most frequently cited reason at 42% is "no market need," far ahead of the second-place reason, "ran out of money" (29%). This figure has been consistently cited by multiple independent research organizations for years.

What is worth noting is that this 42% was measured across startups in general, from before the era of Vibe Coding. This means that even when "building a product" used to take a lot of effort, money, and time, the most common cause of failure was still not in the product development phase. Now that this barrier has almost vanished, intuition suggests that the share of the "no one needs it" reason will grow even larger because the very things that used to make people think twice before starting (cost, time) no longer act as natural filters. Anyone can build a prototype in an afternoon, even when no one has asked if it is actually needed.

Launching for the first time is the peak of the product; many Vibe Coding products have dense commit graphs during their launch week, followed by complete silence. This is not because the authors are lazy or incompetent. The problem is that no one teaches them what to do after the product runs; all existing AI product tutorials stop right at the moment of launch.

Why AI products have no concept of "done"

This is the difference between AI products and traditional products. Traditional software has hardcoded behavior: you write if-else, and it runs exactly like that a million times in a row. AI products are different; their behavior is the result of sampling from a probability distribution at runtime. That distribution shifts constantly: as the way users ask questions changes, as the knowledge base changes, and most importantly, as the model provider silently updates the AI model you are using.

This is not speculation. A study by scientists at Stanford and UC Berkeley (Chen, Zaharia, Zou - "How Is ChatGPT's Behavior Changing over Time?", 2023) measured this phenomenon directly by comparing the same model version called via API at two points three months apart. The results were startling: GPT-4's accuracy in identifying whether a number is prime dropped from about 84% (March 2023) to about 51% just three months later, because the model stopped following the chain-of-thought reasoning pattern as before. The percentage of executable code generated by GPT-4 also dropped sharply, partly because the model began automatically adding triple backticks before and after the code block—a minor formatting change but enough to cause syntax errors across systems automating that code execution. The research team called this phenomenon proof that the behavior of "the same" LLM service can change significantly in a short period and concluded that continuous monitoring is a must, not an option.

In other words: even if you do not touch a single line of your Prompt, your product can still "break" over time, simply because the model provider updated things behind your back. This is why the concept of "AI product completed, packaged, and handed over" which holds true for traditional software, does not apply here.

5 loại thất bại phổ biến và 3 cách khắc phục khi làm AI product – Nguyentantoan phân tích Structural Fixes, Prompt Solutions và Signal & Capability cho đội ngũ phát triển sản phẩm AI tại Videcode

Three tasks that take place after launch day

These three tasks are not done sequentially but rather in parallel, all at the same time.

1. Tracking: Turning user behavior into meaningful data

The most common mistake: waiting for the "dislike" button. The percentage of users who proactively click this button is so low that it is statistically insignificant—the first reaction of a frustrated user is not to leave a rating, but to close the tab. The truly valuable signals are all passive, unintentional ones:

Don't wait for "Like / Dislike" or "Rate this app" buttons. The rate of users proactively clicking these is statistically insignificant; frustrated users will just close the tab and leave, rather than sit there rating your app. If you want to know where things aren't working, look for these 4 signs:

  • Re-asking: The user changes their phrasing to ask the exact same question again. This is the strongest signal of failure because it is completely unconscious.

  • Rewriting: The user breaks down the question, adds detailed conditions, etc., indicating the initial answer was too generic.

  • Abandoning mid-flow: The user abruptly closes the tab while in the middle of an app flow or during generation.

  • Result utilization: Did they download the result? Was the answer copied to be used elsewhere? No matter how smart or advanced your system is, if the results aren't being used, it's useless.

The classification of failures must be by root cause, not by feature module. This is a fundamental difference from traditional software QA, because the exact same symptom (an incorrect answer) can be caused by five completely different reasons: Prompt error, retrieval error (retrieval failing to find the right document), truncated context, actual model capability limits, or most importantly, this is not an error, but the user telling you what feature the product should add next.

Every error that arises must be turned into a reproducible test case to isolate the issue: what is the input, what is the expected behavior, what are the evaluation criteria. By doing this step, a few hundred accumulated cases become a private benchmark—something no competitor can copy, because it is an accumulation over time: if they start today, they will still need three months to catch up with the data you have today.

2. Iteration: Knowing when to fix, and to what extent

The most common mistake: Fixing Prompts on a "case-by-case" basis. By the 30th fix, the Prompt becomes a two-thousand-word document where you don't dare delete a single line because you don't know which line is actually doing the work. The rule to keep: only fix when a group of error causes accumulates enough volume to confirm it is a common pattern, do not fix for a single isolated case.

And before fixing, distinguish between 2 types of issues:

  • Fixable by Prompt: Issues with phrasing, formatting, or tone. Meaning the AI knows how to do it, it just hasn't done it the way you wanted.

  • Not fixable by Prompt: Needs new tools, needs to be broken down into steps, needs additional lookup sources, or needs human intervention. Meaning the AI simply lacks the information or capability to do it alone in one go.

A simple self-test: if you have to write a long explanatory paragraph in the Prompt to "teach" the model a workflow or reasoning process, it is almost certainly a structural problem, not a Prompt problem.

3. Model: Monitoring whether the background AI changes on its own

This is the easiest task to overlook because, as cited above, model behavior can change even when you do nothing. The product can still randomly "break" over time simply because the AI provider silently updates the model.

Therefore, the test suite you gathered in step 1 should not only run when you modify something—it should run periodically, even when nothing changes, to detect early if anything has shifted unexpectedly.

When considering switching models, what matters is not the score on public leaderboards (generic benchmarks measure general capability, not capability in your specific use case), but performance on your own private test suite—and especially looking at where the behavioral variance lies, because a new model might be stronger overall but weaker in the exact use case most critical to you.

"Technical Debt" as Vibe Coding explodes at this stage

This is the most worrying aspect for solo product builders.

Veracode's GenAI Code Security Report 2025, which analyzed 80 standardized programming tasks across more than 100 large language models, showed that AI chose to write insecure code in 45% of cases when given a choice between secure and insecure methods. More worryingly, this security performance did not improve over time despite new models consistently generating more syntactically and logically correct code. Veracode's Chief Technology Officer, Jens Wessling, put it bluntly: the nature of Vibe Coding, where developers outsource to AI without explicitly specifying security requirements, means leaving the model to decide for them, and the model chooses incorrectly nearly half the time.

In other words: when first building the product, the AI writes code for you; you read and understand each line, but you don't understand why it wrote it that way. Everything is fine until real users hit bugs, and you open the code to fix it only to realize you don't know where to start, and you might be sitting on a security vulnerability you are completely unaware of.

What in your AI product is impossible to copy?

The test: Take a screenshot of your product, show it to someone in the same industry. How much of it can they copy?

The truth is: almost everything visible can be copied. How you prompt the AI can be reverse-engineered with a few clever queries—a trick everyone knows. How your product works internally (how many steps it takes, what tools it calls) can be figured out by an expert in less than half a day. Anyone can call AI models via API. The interface can be copied with a few lines of code.

Mô hình tảng băng chìm trong phát triển AI product – Nguyentantoan chỉ ra Prompt, Agent Framework, Model, UI chỉ là bề nổi, còn Case Library và Iteration Speed mới là yếu tố quyết định thành công – phân tích chuyên sâu từ Videcode

Only two things are not in that screenshot, and they are also the only two things that cannot be copied:

  1. Your own data repository, real conversations, in the exact language of real users, in your specific use case. It is context-specific and accumulated over time: if competitors start accumulating today, they will still need the exact amount of time you spent to catch up with the data you have now.

  2. Operational speed: not hard work, but a mechanism. A team with three parallel workflows detecting issues automatically, classifying root causes, and identifying automated fixes—a loop that can be shrunk to one day. A team without a system: waiting for user complaints, guessing the cause, typing a few prompts to see if the bug is gone, leading to a fix cycle that takes a whole week and might not even fix the right thing. A difference of 1 week versus 1 day, run over a year, is a massive gap in the number of fixes deployed. And this has a compound interest effect: each fix not only resolves one bug but also adds experience and information to the data repository, making the next fix even faster.

So what about tech giants? Plenty of people, plenty of money, their own proprietary models—surely their self-patching, self-developing loop is even faster? The answer: fixing speed does not depend on how many people or how much money you have, but on how short the path is from detecting an error to fixing it.

Big companies are great at making AI more powerful and tools more abundant; that is their general strength. But your users will ask very specific questions unique to your product; big companies don't have that information because those are not their clients. For a small team like yours: see a bug in the morning, fix it by noon, deploy it the same day. A big company doing the same task would have to go through document approvals, modular testing, and coordination across multiple teams, taking several days.

So the moat does not lie in being better than a big company in general, but in moving faster than anyone else in your specific niche. But this is only true when you actually do the 3 tasks above, not with a "launch first, figure it out later" approach. Logging user behavior, building test suites, classifying error causes—must be done right from the beginning. If you leave it for later, 3 months of the most valuable data will be lost, or poorly logged and unusable.

Proving capability in the AI era

Writing "I built an AI product" on a resume no longer impresses anyone. Because AI has made building a demo so easy, everyone has one to talk about.

The real question that separates the levels is: after launching, how many versions have you iterated through, and why each time?

The person who can answer this will tell a story: the third version was because we noticed a group of users repeatedly asking the same thing; upon tracing the root cause, we found retrieval failed to fetch the correct document, so we added a query rewriting layer, dropping the re-ask rate from X% to Y%.

The beauty of this: you do not need a massive product to gain truly valuable experience. A product with only 100 users, but where you closely follow those 100 people, listen and iterate continuously for 6 months, will give you far more experience than someone who built 10 demos and abandoned them all, none of them going anywhere.

Conclusion

Your product launch post is not the finish line, but only the starting point.

The important question is not "what product have you built." It is: when will you write your second post, the one that says "After 3 months of listening to real users, here is what I have updated"?

References

  • Andrej Karpathy, original post about "vibe coding" on X, February 2025; and speech at the AI Ascent event (Sequoia Capital), April 2026 on the successor concept "agentic engineering".

  • CB Insights, analysis of startup failure causes based on founder-published post-mortems—"no market need" accounts for 42%, leading the list.

  • Lingjiao Chen, Matei Zaharia, James Zou (Stanford University, UC Berkeley), "How Is ChatGPT's Behavior Changing over Time?", arXiv:2307.09009, 2023.

  • Veracode, 2025 GenAI Code Security Report - analysis of 80 programming tasks across more than 100 large language models, published July 30, 2025.

Wishing you a good day!

Share:

ACCESSIBILITY

I believe that good design should be for everyone and am always committed to providing the most accessible experience. If you have trouble accessing the website, feel free to leave me a message.

NOTE

Website Design and Development by Toan Nguyen. Using the font Space Gortek (Colophon Foundry); Newseader (Production Type). Built on the Framer platform.

Copyright © 2018 – 2025 Toan Nguyen

ACCESSIBILITY

I believe that good design should be for everyone and am always committed to providing the most accessible experience. If you have trouble accessing the website, feel free to leave me a message.

NOTE

Website Design and Development by Toan Nguyen. Using the font Space Gortek (Colophon Foundry); Newseader (Production Type). Built on the Framer platform.

Copyright © 2018 – 2025 Toan Nguyen

ACCESSIBILITY

I believe that good design should be for everyone and am always committed to providing the most accessible experience. If you have trouble accessing the website, feel free to leave me a message.

NOTE

Website Design and Development by Toan Nguyen. Using the font Space Gortek (Colophon Foundry); Newseader (Production Type). Built on the Framer platform.

Copyright © 2018 – 2025 Toan Nguyen