Header image

TypeScript – How To Avoid “Any”?

26/09/2022

2.34k

  • The harmful effects of any
  • Avoiding any
TypeScript - How To Avoid "Any"?

How to avoid any?

In the previous blog – Typescript and “any” type, I introduced TypeScript and what exactly is any type.

In this blog, I’d like to show more about the harmful effects when using any and introduce some built-in types, features and customs types that you can use to avoid any.

The harmful effects of any

While TypeScript is a type checker, any type tells TypeScript to skip/disable type-checking. On the other hand, due to the nature of JavaScript, in some cases providing accurate types isn’t a simple task. In such situations, programmers are tempted to use any.

In most situations using or implicit any – a type that allows to store anything and skip type checkers, programmers can’t guarantee what type the value is stored and how it will be used. Furthermore, when the code is executed at runtime, errors may occur even though they were not warned before. For example:

let result; // Variable 'result' implicitly has an 'any' type.
result = 10.123; // Number is stored at 'result'

console.log(result.toFixed()); // `toFixed()` is a method of `number`

result.willExist(); // `willExist()` isn't a method of `number`, but no errors appear.

Because of that, the use of any is something that should be minimized as much as possible, to ensure the source code does not encounter any errors.

Avoiding any

Based on the basics of TypeScript and Everyday Types, in this blog, I’ll be sharing what I learned and used to write code without any.

Type aliases & Interfaces

A type alias is exactly a name for any type, you can actually use a type alias to give a name to any type at all, not just an object type. For example:

// Type alias
type Point = {
  x: number,
  y: number
};

type ID = number | string;

An interface declaration is another way to name an object type:

// Interface
interface IPoint {
  x: number,
  y: number
};

Differences between Type Aliases and Interfaces:

// Override
type Point = { // TypeError: Duplicate identifier 'Point'.
  a: string
};
interface IPoint {
  a: string
};

Union & Literal types

A union type is a type formed from two or more other types, representing values that may be any one of those types.

// Union types
let anyNumber: string | number;

// Usage
anyNumber = '123';
anyNumber = 123;
anyNumber = true; // TypeError: Type 'boolean' is not assignable to type 'string | number'.

In addition to the general types of string and number, you can refer to specific value of strings and numbers.
By combining literals into unions, you can express a much more useful concept. For example:

// Literal types
let direction: 'top' | 'left' | 'right' | 'bottom';

direction = 'top';
direction = 'top-right'; // TypeError: Type '"top-right"' is not assignable to type '"top" | "left" | "right" | "bottom"'

Type assertions

Sometimes you will have information about the type of a value that TypeScript can’t know about.

For example, if you’re using document.getElementById, TypeScript only knows that this will return some kind of HTMLElement, but you might know that your page will always have an HTMLCanvasElement with a given ID.

In this situation, you can use a type assertion to specify a more specific type:

// Type assertions
const myCanvas = document.getElementById('main-canvas') as HTMLCanvasElement;

Generics

// Example
const getRandomNumber = (items: number[]): number => {
  let randomIndex = Math.floor(Math.random() * items.length);
  return items[randomIndex];
};
const getRandomString = (items: string[]): string => {
  let randomIndex = Math.floor(Math.random() * items.length);
  return items[randomIndex];
};

// Generics function
const getRandomGeneric = <T>(items: T[]): T => {
  let randomIndex = Math.floor(Math.random() * items.length);
  return items[randomIndex];
};

// Usage
const teams: string[] = ['frontend', 'ios', 'android'];
const numbers: number[] = [1, 2, 3, 4, 5, 6, 7, 9, 10];

const randomResult1 = getRandomGeneric<string>(teams);
const randomResult2 = getRandomGeneric<number>(numbers);

In the example above, the getRandomGeneric is the generic identity function that worked over a range of types.

The type of generic functions is just like those of non-generic functions, with the type parameters listed first, similarly to function declarations:

const identity = <Type>(param: Type): Type => {
  return param;
};

When calling identity a function, you now will also need to specify the type of param that the function will use.

The detail above just Generic identity functions, you can read more generics Generic link

Unknown

unknown is what should be used when you don’t know a proper type of object. Unlike any, it doesn’t let you do any operations on a value until you know its type (skip/disable type-checker).

When you unknow something, you need to check before executing. For example:

const invokeAnything = (callback: unknown): void => {
  if (typeof callback === 'function') {
    callback();
  }
  if (typeof callback === 'number') {
    console.log(callback);
  }
  if (typeof callback === 'string') {
    console.log(callback.toUpperCase());
  }
};

// Usage
invokeAnything('typescript'); // Result: TYPESCRIPT

Record for basic object

Probably, nearly every JavaScript developer at some time has used an object as a map-like collection. However, with strict types, it may not be that obvious how to type this. So, you may use interface, but this way you can’t add anything to the object. Then, you need to think about using Record.

The definition:

type Record<K extends keyof any, T> = {
  [P in K]: T;
};

And the usage:

// Usage
const dict: Record<string, number> = {};
dict.a = 1;
dict.b = 'a'; // TypeError: "a" is not assignable to type number

let obj: Record<string, number>;
obj = {
  a: 1,
  b: 2
};

As you can see, it means that the developer can enter any key, but the value has to be of a specific type.

Conclusion

The TypeScript compiler is so powerful. There are so many things we can do with it.

any type can be avoided with more advanced technics such as interface, type intersection, and the use of generics, etc.

Hope you like it! Enjoy TypeScript and make the code without any!

Author: Anh Nguyen

Related Blog

prd-thumb-draft-product

Software Development

+0

    TypeScript And “Any” Type

    TypeScript is a strongly typed programming language that builds on JavaScript, giving you a better ability to detect errors and describe your code. But sometimes you don't know the exact type of value that you're using because it comes from user input or a third-party API. In this case, you want to skip the type checking and allow the value to pass through the compile check. The TypeScript any type is the perfect solution for you because if you use it, the TypeScript compiler will not complain about the type issue. This blog will help you understand the any type in TypeScript, but before doing that, let's begin with some basic concepts! What is TypeScript? TypeScript checks a program for errors before execution and does so based on the kinds of values; it’s a static type checker. Superset of JavaScript TypeScript is a language that is a superset of JavaScript: JS syntax is, therefore, legal TS. However, TypeScript is a typed superset that adds rules about how different kinds of values can be used. Runtime Behavior TypeScript is also a programming language that preserves JavaScript's runtime behavior. This means that if you move code from JavaScript to TypeScript, it is guaranteed to run the same way, even if TypeScript thinks the code has type errors. Erased Types Roughly speaking, once TypeScript’s compiler is done with checking your code, it erases the types to produce the resulting compiled code. This means that once your code is compiled, the resulting plain JS code has no type information. An easy way of understanding TypeScript A languageA superset of JavaScriptPreserver the runtime behavior of JavaScriptType checker layer JavaScript + Types = TypeScript Basic typing Type annotations TypeScript uses type annotations to explicitly specify types for identifiers such as variables, functions, objects, etc. // Syntax : type Once an identifier is annotated with a type, it can be used as that type only. If the identifier is used as a different type, the TypeScript compiler will issue an error. let counter: number; counter = 1; counter = 'Hello'; // Error: Type '"Hello"' is not assignable to type 'number'. The following shows other examples of type annotations: let name: string = 'John'; let age: number = 25; let active: boolean = true; // Array let names: string[] = ['John', 'Jane', 'Peter', 'David', 'Mary']; // Object let person: { name: string; age: number }; person = { name: 'John', age: 25 }; // Valid // Function let sayHello : (name: string) => string; sayHello = (name: string) => { return `Hello ${name}`; }; Type inference Type inference describes where and how TypeScript infers types when you don’t explicitly annotate them. For example: // Annotations let counter: number; // Inference: TypeScript will infer the type the `counter` to be `number` let counter = 1; Likewise, when you assign a function parameter a value, TypeScript infers the type of the parameter to the type of the default value. For example: // TypeScript infers type of the `max` parameter to be `number` const setCounter = (max = 100) => { // ... } Similarly, TypeScript infers the return type to the type of the return value: const increment = (counter: number) => { return counter++; } // It is the same as: const increment = (counter: number) : number => { return counter++; } The following shows other examples of type inference: const items = [0, 1, null, 'Hi']; // (number | string)[] const mixArr = [new Date(), new RegExp('\d+')]; // (RegExp | Date)[] const increase = (counter: number, max = 100) => { return counter++; }; // (counter: number, max?: number) => number Contextual typing TypeScript uses the locations of variables to infer their types. This mechanism is known as contextual typing. For example: document.addEventListener('click', (event) => { console.log(event.button); // Valid }); In this example, TypeScript knows that the event the parameter is an instance of MouseEvent because of the click event. However, when you change the click event to the scroll the event, TypeScript will issue an error: document.addEventListener('scroll', (event) => { console.log(event.button); // Compile error }); // Property 'button' does not exist on type 'Event'. TypeScript knows that the event in this case, is an instance of UIEvent, not a MouseEvent. And UIEvent does not have the button property, therefore, TypeScript throws an error. Other examples of contextual typing // Array members const names = ['John', 'Jane', 'Peter', 'David', 'Mary']; // string[] names.map(name => name.toUpperCase()); // (name: string) => string // Type assertions const myCanvas = document.getElementById('main-canvas') as HTMLCanvasElement; Type inference vs Type annotations Type inferenceType annotationsTypeScript guesses the typeYou explicitly tell TypeScript the type What exactly is TypeScript any? When you don’t explicitly annotate and TypeScript can't infer exactly the type, that means you declare a variable without specifying a type, TypeScript assumes that you use the any type. This practice is called implicit typing. For example: let result; // Variable 'result' implicitly has an 'any' type. So, what exactly is any? TypeScript any is a particular type that you can use whenever you don't want a particular value to cause type-checking errors. That means the TypeScript compiler doesn't complain or issue any errors. When a value is of type any, you can access any properties of it, call it like a function, assign it to (or from) a value of any type, or pretty much anything else that’s syntactically legal: let obj: any = { x: 0 }; // None of the following lines of code will throw compiler errors. // Using `any` disables all further type checking, and it is assumed // you know the environment better than TypeScript. obj.foo(); obj(); obj.bar = 100; obj = 'hello'; const n: number = obj; Looking back at an easier-to-understand any: A special type.Skip/Disable type-checking.TypeScript doesn't complain or issue any errors.Default implicit typing is any. Note that to disable implicit typing to the any type, you change the noImplicitAny option in the tsconfig.json file to true. Why does TypeScript provide any type? As described above, while TypeScript is a type checker, any type tells TypeScript to skip/disable type-checking. Whether TypeScript has made a mistake here and why it provides any type? In fact, sometimes the developer can't determine the type of value or can't determine the return value from the 3rd party. In most cases they use any type or implicit typing as any. So they seem to think that TypeScript provides any to do those things. So, is that the root reason that TypeScript provides any? Actually, I think there is a more compelling reason for TypeScript providing any that the any type provides you with a way to work with the existing JavaScript codebase. It allows you to gradually opt-in and opt out of type checking during compilation. Therefore, you can use the any type for migrating a JavaScript project over to TypeScript. Conclusion TypeScript is a Type checker layer. The TypeScript any type allows you to store a value of any type. It instructs the compiler to skip type-checking. Use the any type to store a value when you migrate a JavaScript project over to a TypeScript project. In the next blog, I will show you more about the harmful effects of any and how to avoid them. Hope you like it! See you in the next blog! Reference TypeScript handbookTypeScript tutorial Author: Anh Nguyen

    07/09/2022

    1.98k

    Software Development

    +0

      TypeScript And “Any” Type

      07/09/2022

      1.98k

      Team Người Việc: Winning with AI-Assisted Development at SupremeTech

      AI

      AI-assisted development

      +0

        How Team Người Việc Won SupremeTech’s AI Hackathon 2025 with AI-Assisted Development and Agile Thinking

        24 hours. 10 teams. Countless lines of code. One team claimed the spotlight and took half of the 100 million VND prize pool. SupremeTech’s first-ever AI Hackathon was more than just a competition, it was a test of endurance, creativity, and teamwork. For one intense day and night, our participants pushed the limits of AI-assisted development, turning raw ideas into functioning prototypes under extreme time pressure. Among them, three teams rose above the rest. Their solutions not only showcased strong technical execution but also revealed how AI hackathon use cases can bring real business value in areas such as customer experience, automation, and data-driven decision-making. These top three use cases highlight the future potential of AI and the passion of SupremeTech’s people to turn vision into reality. Brought home the Top Prize - Team Người Việc stood out for their sharp strategy and teamwork. Their winning project solved a familiar yet complex issue in the tourism industry: managing group travel efficiently while ensuring every participant enjoys a seamless experience. Presented in clear business logic, executed with agile methodology, and powered by AI-assisted development, their solution proved that innovation thrives when technology meets human insight. Introducing the Team: Small but Strong Team Người Việc brought together a crew of four: Hung Dinh, Huy Nguyen, and Dung Nguyen as front-end engineers, and Khanh Nguyen as the business analyst. While other teams had five members, this smaller team turned their size into strength. With Khanh shaping the business logic and user journey, and the three engineers transforming those ideas into a functional product, they created a strong link between business insight and technical execution. Each member brought a distinct perspective: one focused on monetization and business value, another on operational flow, and others on technical quality and user experience. Together, they created a strong team that has both business insight and technical execution. Khanh shared that: “Everyone respected each other’s opinions. We weren’t chasing perfection, we were building something real, something that worked”. The Challenge: Turning Hot and Heavy Topic into Opportunity When the AI Hackathon began, the participating teams didn’t get to choose their challenge. Each team drew a topic randomly from a pool of three, and fate handed team Người Việc a challenge that was both broad and complex: Destination and Experience Management System for Tourism. Instead of seeing it as an obstacle, the team saw great potential in this topic: “It’s actually very close to what SupremeTech does,” one member shared. “Tourism and service coordination are among the industries where our clients face similar pain points. If developed further, this could even become a real product for the company”. For most teams, tackling something this wide in just 24 hours would be overwhelming. But for Người Việc, it became the perfect opportunity to combine business logic, agile thinking, and AI-assisted development into a single solution. Dũng, one of the front-end engineers shared: “We didn’t see it as just a travel problem. It’s a coordination problem that every company faces because of too many people, too little time, and too many things to track.” The Idea: Transforming Tourism Coordination with AI Manual planning and coordination often create time-consuming processes, lack of feedback, and fragmented communication across travel agencies, corporate HR departments, and trip participants. To solve this, Người Việc envisioned an end-to-end platform that connects all stakeholders, from travel agencies and corporate planners to event organizers and trip participants.The system enables users to: Create and customize travel itinerariesConnect directly with travel agencies through a marketplace modelTrack schedules via QR codeProvide instant feedback during the trip. In short, it bridges the gap between demand and supply in hospitality, creating a more transparent, interactive, and seamless travel experience. The Process: From Brainstorming to AI-Assisted Development What set Người Việc apart was their strategic mindset before touching a single line of code. Instead of rushing to use AI tools right-away, the team began with a face-to-face brainstorming session, mapping out what a real group trip looks like from start to finish: from planning and agency communication to real-time updates and user feedback. To validate their ideas, they even called friends working in hospitality to understand pain points from the field such as: how agencies handle client requests, where information gets lost, and what travelers actually expect. Only after this discovery phase, the team moved into design and development. They first created clear user stories and workflows on their own, then applied story-based prompting by feeding those stories into ChatGPT and Copilot to generate database schemas, API endpoints, and code snippets. This structured use of AI helped them align technical output with business logic and speed up development. Their approach became a model of how AI-assisted development and agile methodology can complement each other, keeping logic clear while boosting speed. Their mantra throughout the process was simple yet powerful: Think first, then use AI smartly. This mindset kept their workflow focused, turning AI into a productivity multiplier instead of a shortcut, and became a highlight in their AI hackathon journey.Without a QC member, the team stayed flexible and shared responsibilities across roles. Each member could take on multiple tasks when needed, but they still kept a clear structure in how they worked. The PTL and BA stepped in as real users, testing features and giving feedback from a user’s point of view. After defining their user roles and business logic, Team Người Việc translated their ideas into a working prototype. Their platform acts as a bridge between corporate planners and travel agencies, creating a space where requests, itineraries, and feedback flow seamlessly in real time. The system’s core features included: Trip creation and customization: HR or operation teams can build itineraries, adjust timelines, and submit requests tailored to their needs.Agency collaboration: Travel agencies receive those requests, update details, and negotiate directly through the platform, no more back-and-forth emails or lost messages.Participant tracking: Each trip generates a public QR code, allowing members to follow updates, view schedules, and send instant feedback during the journey.Transparency and engagement: The platform closes the communication loop, giving every stakeholder a clearer view of the process. With these key flows completed, the team delivered a functional MVP, a product with clean logic, smooth handoffs between roles, and enough structure to be reused or scaled for other industries. Modern Tech Stack Built for AI-Driven Innovation To bring their concept to life within 24 hours, Team Người Việc designed a tech stack that was modern, lightweight, and AI-friendly. Every layer from frontend to deployment was chosen to balance speed, scalability, and maintainability. Frontend Layer: Fast and Built for Clarity The team developed the user interface using Next.js 15 to handle both page rendering and API routes. Combined with TypeScript, it provided type safety and consistency across all modules, reducing human errors in the rush of development. For styling and components, they used Tailwind CSS and shadcn/ui, which allowed them to quickly create a clean, responsive design without spending time reinventing basic UI elements. Despite the tight schedule, the frontend still delivered a cohesive experience from trip creation to QR-based tracking, proving that with the right stack, agility doesn’t mean sacrificing structure. Backend Layer: Structured Logic and Data Flow Behind the interface, the team used Prisma ORM to manage the database layer. Its schema-first approach, paired with TypeScript integration, helped them maintain data consistency while iterating rapidly. The backend services were also written in Next.js, utilizing server functions to keep everything unified and easy to deploy. This setup gave the team clear control over their data models and allowed them to focus on the business logic, ensuring that trip creation, feedback collection, and participant interactions all flowed smoothly without manual handling. Infrastructure & Deployment: Stability under Pressure To keep their development-to-demo pipeline fast and reliable, Người Việc deployed their system on AWS using Dokploy - a self-hosted CI/CD solution that automates Docker-based deployments. This environment allowed them to push code, test changes, and release updates seamlessly without dependency conflicts. By using Docker containers, they replicated production conditions from the start, ensuring that the MVP remained stable and demo-ready throughout the hackathon. The setup was simple enough for rapid iteration yet robust enough to be scaled for real client use. AI Tools: A Smarter, Not Faster, Way to Build AI played a key role in the team’s workflow but only after the foundation was set.ChatGPT acted as their assistant for ideation and logic design, helping refine user stories, define acceptance criteria, and clarify user flows. Meanwhile, GitHub Copilot served as their pair programmer, generating clean snippets, suggesting improvements, and handling repetitive coding tasks. Instead of using AI as a shortcut, Người Việc used it as an accelerator by integrating it at the right moments to enhance productivity while keeping control of direction and logic. >>> Read more related articles: AI-Assisted Ecommerce Solution Wins Third Place at SupremeTech AI Hackathon 2025How Human Intelligence and AI Capabilities Can Redefine Software Development | Featuring The 1st Runner-Up of SupremeTech AI Hackathon 2025 Judges’ Feedbacks Business Perspective From a business perspective, the judges saw Team Người Việc as a perfect example of practicality and vision. Their solution showed how AI-driven development can address real client needs, especially in industries like travel and hospitality. However, the judges also provided constructive feedback for future improvement. While the idea covered a broad scope from sales to operations, they suggested narrowing the focus to one specific stage in the travel management cycle. By doing so, the solution could achieve higher feasibility and faster adoption in real-world scenarios. The judges also encouraged documenting the team’s AI-assisted project management workflow as a reference for future AI hackathon journeys within SupremeTech. The final presentation showcased all the best qualities of their teamwork. The judges highlighted Người Việc’s clear storytelling, strong time management, and smooth demo delivery that effectively illustrated how their system worked. The team’s confident, structured presentation left a lasting impression and perfectly captured the spirit of SupremeTech’s AI Hackathon. Technical and Engineering Perspective From a technical point of view, the judges recognized Người Việc as a team that combined strong engineering skill with thoughtful use of modern tools. They developed their product on a well-defined code base with clear development standards, following a structured flow from analysis and design to implementation, which is remarkable under the time pressure of a 24-hour hackathon. The highlight of their approach was the story-based prompting technique, which kept the project’s logic coherent from start to finish. By crafting prompts around user stories rather than isolated tasks, the team ensured that every AI-generated piece of code served a real business purpose. This balance between automation and human reasoning became one of the defining features of their success. Teamwork: Staying Calm When Things Went Wrong No hackathon story is complete without chaos and Người Việc had their moment too. Just before the final presentation, disaster happened: the team’s slide suddenly became inaccessible because their shared drive was locked by the judges. With only minutes left, they borrowed a laptop, rebuilt the slides from scratch, and walked onto the stage calm and composed delivering a confident demo that looked effortless to the audience. The team recalled “After 22 hours of coding, what stayed with us wasn’t exhaustion. It was that moment when everyone looked at each other and said: We'll make it work, no matter what.” Voices from the Winners For Team Người Việc, winning the hackathon was not just about the prize, it was about learning how humans and AI can truly collaborate. Reflecting on the experience, Dũng shared: “We realized that AI isn’t just a tool, it’s a real teammate, if you know how to ‘talk’ to it. Each team used AI differently: some for brainstorming, some for UI design, others for presentation. But the prompts we gave were never the same, and that’s why the results were so different. AI only shows its real power when people know how to guide it.” As winners, the team also offered advice for those who will join future hackathons: “Prepare everything you can beforehand: boilerplate code, deployment setup, tools, and your fighting spirit. Once the event starts, every minute counts. And above all, trust your team” Conclusion Team Người Việc proved that real innovation is not only about technology, but about people working together with purpose. By combining business insight, teamwork, and the smart use of AI, they turned a difficult 24-hour challenge into a real achievement. For SupremeTech, this victory is more than just a competition result. It’s a reminder that the future of development starts with clear thinking, strong teamwork, and the courage to explore new ways of building with AI. Appendix: 1. How the Team Applied AI Throughout the Project StageApproachAI Application/ Tools UsedAnalysis & DesignThe whole team brainstormed together, role-playing as real users to map out workflows and features.No AI used — this was the most human-driven stage focused on critical thinking.User Story writingConverted rough ideas into logical workflows, defined goals, and acceptance criteria.ChatGPT acted as a virtual BA, turning brainstorm notes into professional User Stories and Acceptance Criteria.Coding (User Story Based)Developers implemented each User Story while communicating directly with the AI assistant for suggestions and refactoring.GitHub Copilot served as a coding partner, reading stories, suggesting code, refining syntax, and accelerating implementation.Testing & ReleaseThe PTL and BA acted as real users to test the product, identify bugs, and refine the UX before release.No AI used — manual testing for real-user validation. 2. Team Tech Stack LayerTech StackFrontend & Backend (Fullstack)Next.js 15 (App Router)UI Libraryshadcn/ui + TailwindCSSAI AssistantChatGPT + GitHub CopilotInfra / DeployAWS + Dokploy 📩 Read more articles about us here: SupremeTech’s Blog

        22/10/2025

        84

        Quy Huynh

        AI

        +1

        • AI-assisted development

        How Team Người Việc Won SupremeTech’s AI Hackathon 2025 with AI-Assisted Development and Agile Thinking

        22/10/2025

        84

        Quy Huynh

        nguoi lao wins third place AI hackathon ecommerce AI

        AI

        AI-assisted development

        +0

          AI-Assisted Ecommerce Solution Wins Third Place at SupremeTech AI Hackathon 2025

          SupremeTech’s first-ever AI Hackathon was more than just a competition. It was a thrilling test of creativity, focus, and endurance. For 22 hours, teams of passionate innovators raced against time to turn bold ideas into working prototypes that could bring real business value through AI. Among them was team Người Lào, whose project tackled one of the most relevant challenges in modern retail: building an omnichannel e-commerce and loyalty platform supported by AI. The goal was to create a system that connects online shopping, personalized loyalty programs, and in-store interactions into one seamless customer journey.What made Người Lào stand out was their business-driven mindset. Instead of treating the task as a purely technical challenge, they saw it as an opportunity to transform how Vietnamese cosmetic retailers connect with their customers. Their answer was ViEC Beauty, an innovative AI-powered e-commerce solution built on Zalo Mini App, turning a familiar local platform into a powerful tool for digital commerce. Meet The Team Team Người Lào was formed with the simple spirit of having fun, staying friendly, and learning together. Everyone joined with an open mind, ready to give their best once the challenge began. The team brought together members from different backgrounds, covering all key roles in a real project from infrastructure and front-end to back-end, business analysis, and quality control.Phuoc Pham, the team leader, believed great teamwork mattered more than perfect technical skills. What he looked for were people who knew their strengths and were willing to give their all. With that mindset, Người Lào grew into a team built on trust, respect, and laughter, values that ultimately became their greatest strength. When a Familiar Task Became the Toughest Challenge At first, the assignment sounded simple: create a multi-channel e-commerce and loyalty platform for retail stores. Building e-commerce systems was something most members already did in their daily work. But soon they realized that creating a typical shopping app would not stand out. To impress the judges, they needed something fresh, a solution with clear business impact and technical creativity. In just 22 hours, with five members and the support of AI tools, Người Lào had to deliver a product that was practical, scalable, and market-ready. Finding a Small Idea with Big Impact After a few brainstorming sessions, they decided to focus on a small but meaningful niche: the Vietnamese cosmetic retail market. This idea came from observing how many small cosmetic shops in Vietnam were struggling to keep up with the digital shift. While big players like Shopee and TikTok Shop dominate online sales, a large number of small cosmetic stores still lack proper digital tools to compete. These stores serve a loyal base of middle-aged customers who have strong purchasing power but are often left behind in the rush of digital transformation. They do not need complex apps or flashy platforms. What they need is something simple, familiar, and trustworthy. Người Lào identified three major problems these small retailers face: Losing connection with middle-aged customers who prefer personal interaction but no longer visit the store as often.Lack of customer insights makes it hard for shop owners to understand shopping habits or preferences.Being overshadowed by large e-commerce platforms, which are slowly taking over their loyal customer base. With those challenges in mind, Người Lào saw an opportunity to make a real difference. Instead of competing with big platforms, they wanted to empower small retailers with a digital tool that feels local, personal, and easy to use.That was when the idea of building an AI-powered e-commerce solution on Zalo Mini App, namely ViEC Beauty, was born. ViEC Beauty is a platform that could bring e-commerce and loyalty features right into the ecosystem that Vietnamese users already trust and use every day. It was a smart move that combined business empathy, technical creativity, and a clear understanding of the local market. From Idea to Prototype in 24 Hours Once the idea was clear, the real race began. With only 24 hours to bring ViEC Beauty to life, Người Lào jumped straight into action. The plan was simple: divide roles clearly, trust each other’s strengths, and move fast. Hieu Vo, the dev lead, took charge of integrations and overall coordination. Anh Duong focused on building the back end with Laravel and setting up the admin site. Hieu Cao worked on the front end of the Zalo Mini App. At the same time, Huong Nguyen took on both the Business Analyst and Quality Control roles to ensure everything aligned with the initial vision. Meanwhile, Phuoc Pham, the team leader, acted as the bridge connecting everyone - reviewing ideas, making key decisions, and preparing the final presentation slides. With all the key roles covered, the team had a 360-degree view of the project, from technical implementation to business logic and user experience. They spent the first ten hours coding with AI Copilot and documenting the workflow. It was intense but exciting until the team hit a wall. The AI started producing conflicting UI components due to unclear process design in the initial prompts. What was supposed to save time ended up creating bugs that needed hours to fix. But instead of getting frustrated, the team stayed calm, laughed it off, and worked together to debug and refine the product until everything clicked into place. When the final hour arrived, they had a fully working Zalo Mini App—not perfect, but functional, meaningful, and proudly built within a single sleepless day. The Product: Core Features That Matter ViEC Beauty, an AI-powered e-commerce solution built within the Zalo ecosystem, offered small beauty retailers an accessible and familiar way to sell online and engage customers. Core App Features Product Catalog: An easy-to-browse collection of beauty products directly inside Zalo.Basic Loyalty Point System: Customers earn and redeem points to encourage repeat purchases.Admin Dashboard Prototype: A simple dashboard for store owners to manage products, orders, and sales.Zalo Integration Setup: Allows stores to send personalized notifications, skincare reminders, and promotions through the Zalo Official Account. Super Admin System A more advanced panel included: Real-time data analytics for instant business insightsInventory management to track stock levelsCRM tools to maintain relationships and engagementCampaign and promotion management to run and measure marketing activities Even though some features like Group Orders and AI Skin Analysis were still in ideation, ViEC Beauty already demonstrated how a simple, focused solution could bring AI-powered value to small businesses. Tech Stack The team built ViEC Beauty with React and Zalo SDK for the front end, Laravel for the back end, MySQL for the database, and EC2 cloud infrastructure for hosting. They chose familiar and reliable technologies to move fast and deliver results within 24 hours, prioritizing execution over complexity. >>> Read more related articles: SupremeTech’s AI Hackathon 2025: A blend of Product-Focused Spirit and AI-assisted DevelopmentHow Human Intelligence and AI Capabilities Can Redefine Software Development | Featuring The 1st Runner-Up of SupremeTech AI Hackathon 2025 Judges’ Feedback The judges praised Người Lào’s strategic focus on a niche market and their decision to build on the Zalo Mini App, calling it a practical and high-potential approach. They noted that while the product targeted small beauty retailers, a limited market segment, it had strong potential for real-world implementation. They recommended expanding ViEC Beauty into a multi-store SaaS platform, adding community-driven features, and integrating AI more deeply for personalization and competitiveness. On the technical side, the judges commended the team’s clear planning, fast execution, and AI integration. They encouraged the team to make AI applications more visible and explore scalability for larger projects. Overall, Người Lào left a strong impression with a well-executed prototype and a clear vision for future growth. Teamwork Memorable Moments For Phuoc Pham, the leader, the biggest lesson was simple: strong determination makes anything possible. He learned to stay focused, manage effort wisely, and balance ambition with practicality so the team could deliver on time. To him, the real strength of Người Lào came from teamwork, from every member understanding their own strengths and supporting one another toward a shared goal. Huong Nguyen shared that the hackathon was an unforgettable experience, a test of creativity, patience, and collaboration. From ideation to final delivery, every member gave their best and learned how to manage time, communicate, and step outside their comfort zones. Winning third place was a proud moment, but for the team, the valid reward was the experience itself, learning, laughing, and building something meaningful together. Conclusion For Người Lào, the SupremeTech AI Hackathon 2025 was more than a contest. It was a journey of teamwork, creativity, and discovery. In just 24 hours, they turned an idea into a working Zalo Mini App that blended business insight, AI innovation, and human collaboration. Their story proved that success is not just about winning but about learning how to move fast, stay focused, and create with purpose. ViEC Beauty started as a hackathon project, but it carries the potential to grow into something much bigger for Vietnam’s beauty retail industry. Team Phuoc Pham T. - Senior Infra EngineerHieu Vo H. - Senior BE EngineerDuong Nguyen V. A. - BE EngineerHieu Cao K. - FE EngineerHuong Nguyen T.T. - Quality Control Engineer  Tech Stack Frontend: React, Zalo SDKBackend: LaravelDatabase: MySQLInfrastructure: EC2, Cloud 📩 Read more articles about us here: SupremeTech’s Blog

          21/10/2025

          96

          Ngan Phan

          AI

          +1

          • AI-assisted development

          AI-Assisted Ecommerce Solution Wins Third Place at SupremeTech AI Hackathon 2025

          21/10/2025

          96

          Ngan Phan

          Gensync top 2 Hackathon AI SupremeTech 2025

          AI

          AI-assisted development

          +0

            How Human Intelligence and AI Capabilities Can Redefine Software Development | Featuring The 1st Runner-Up of SupremeTech AI Hackathon 2025

            After 2 weeks of thorough assessment, our judges have officially announced the top threes of SupremeTech AI Hackathon 2025. In a final scoreboard where the results were incredibly close, GenSync impressively secured the first runner-up position, missing the crown by just half a point. Their success didn’t come by chance. It was the product of sharp preparation, savvy use of AI, and teamwork that ran like clockwork. GenSync perfectly embodies how human intelligence and strategic thinking, when combined with effective AI application, can create exceptional outcomes.  That’s the same winning formula SupremeTech is bringing to life: Building AI-assisted solutions that elevate performance and cut costs without cutting corners. Let’s take a look back at what made GenSync stand out, and how about trying to apply AI the way they did to build a truly working MVP in just 22 hours. For details about the solutions, tech stack and highlighted prompts, scroll down to the Appendix section. Prepare a Strong Foundation Before the Starting Line  Right after registering for the Hackathon, this crew was already architecting the workflow and put into practice the whole process. GenSyncs is no doubt the most well-prepared team in this hackathon.  They treated preparation like a mini hackathon of its own, consolidating in just two intensive planning sessions: Session one: Roles were assigned to make sure that each member knew exactly which hat to wear: Backend, Frontend, Mobile, BA, QC, Scrum Master. The smart move was to utilize the Agile Development Project Life Cycle and craft it into a mini version that runs smoothly in 22 hours. We will dive deeper into this point in the next section. Session two: The team dove into the fun part: prompt experimentation. They exchanged prompt-crafting know-how like secret recipes and tested which AI models played best with their ideas. Trial runs with mock challenges helped them fine-tune the prompts to generate the satisfied output. By the end, they’d not only aligned as a team but had built what can be called “a structured prompt playbook”. “We treated AI as part of the team, not just a tool. For the “master” prompt that generates system design, I tested the prompt myself based on past experiences to come up with the most efficient prompt. If you took the prompt from somewhere on the Internet without curating it, it may never work the way you want”Tuan Mai - Technical Leader of the team AI-Assisted, 22-hour Mini Version of the Agile Development Project Life Cycle As said, one of the smart moves of GenSync is to utilize Agile Development Project Life Cycle as a skeleton of their hackathon strategy. By applying selectively the framework, GenSync achieved harmonized, well-managed project management. Members collaborated smoothly with each other like a rhythm because everyone is already familiar with Agile in their daily work.  They simply empower Agile with several AI co-pilots, namely GPT-5, Claude 4.0 and Github Copilot.   The team broke the challenge into sprints just like any other project. But instead of endless spreadsheets, they let prompts do the heavy lifting: Sprint 1: Ideation. GPT-5 and Deep Search acted as their research department, scanning the latest tourism tech trends and helping the team shape their concept in record time. Then came the human touch: the team weighed every AI suggestion against their own experience across backend, frontend, and mobile development to come up with the final concept file. It acts as the North Star of their project.Sprint 2: Design. Claude 4.0 turned those ideas into tangible structures. From architecture diagrams to data flow logic, every detail was auto-documented and formatted with machine precision. The team even used prompts to list and prioritize screens according to business objectives.  Sprint 3: Implementation. Using GPT-5, Copilot, and Claude Sonnet, they created a complete work lifecycle. GPT-5 helped write guidance files for Copilot, defining logic structures, and coding styles.Copilot followed screen flows in the master design to code while developers focused on creative logic.Claude Sonnet handled documentation and integration.Sprint 4: Review & Testing. Code was co-reviewed by robots and humans. Copilot and GPT-4 took the first pass, while Claude Sonnet and the QC member ran automated API testing, BA handled UI tests to ensure the demo ran beautifully.  In short, they built a collaboration model with AI. Humans provided direction, AI delivered results, then humans curated the results and instructed AI to improve. Most importantly, the system design and master concept serve as the guiding compass for aligning every feature’s design, ensuring that all functionalities stay true to the product’s overall goal. A Hackathon Experience that Changes the Perspectives of Development Team For Good When asked about what they bring home after the hackathon, Quỳnh Anh, the Business Analyst, shared: “We aim for the trophy, but 1st runner-up place is not bad (haha). Most importantly, this Hackathon completely altered my perspectives towards using AI at work. Now I can use AI as an agent to help analyze and process business requirements”. Quỳnh Anh - Business Analyst Vũ Nguyễn looked back at the journey from a different angle: “Joining the hackathon helped me gain a deeper understanding of the roles of other specialized teams in a project and how to leverage AI to build a product from scratch. After the competition, I even built my own website to support QC certification exams with AI. I used the very same prompts our team created during the hackathon. The journey was truly a blast. The leftovers are memories and invaluable experiences.”Vũ Nguyễn - Scrum Master, QC and Team Leader GenSync currently holds the record as the team with the most code written in the hackathon, boasting over 100,000 lines of code. Final Words We are glad that our first AI hackathon turns out to be exactly what it’s designed to be, a laboratory for the future of teamwork, creativity, and intelligent development.  At the end of the day, is AI stealing jobs from software developers? After hosting an internal AI hackathon and witnessing the performance of our engineers, we SupremeTech seem to have an answer for ourselves. Artificial intelligence definitely cannot replace the creativity and sophistication in human minds. And those are among the driving forces of a product’s success. If well managed, however, AI will create an unprecedented advantage in terms of speed and implementation capabilities for those who act first. Follow us to get more insights about how to utilize AI-assisted development to build products faster and more cost-efficiently. Or simply book a free consultation if you have an idea that you want to make it happen fast.  >>> Read more related articles: SupremeTech’s AI Hackathon 2025: A blend of Product-Focused Spirit and AI-assisted DevelopmentA to Z about SupremeTech’s AI Hackathon 2025: Why We Do It and What to Expect Appendix: Overview of the Product The challenge: Destination and Experience Management System for Tourism In this statement, teams are required to develop a platform that streamlines group trip management. The solution should enable organizers to coordinate transportation, schedules, and interactions in one place, instead of relying on scattered tools like messenger apps.  The solution: MVP mobile apps that allow users to view tour details and interact with other tour members. Admin apps that allow companies in the tourism industry to manage destination and customer experience.  The apps is optimized for group tour management with 6 main features: Tour creation Scan QR code to view tour schedules holistically Realtime chatbot to stay connected with other members in the tourAI chatbot to support search and customer servicePush notifications to keep users updated with new changes in tour scheduleRecommendation engine for tourist attraction suggestions Highlighted Prompts Sprint 1: Ideation: Sprint 2: Design Sprint 4: Review & Testing Team Vu Nguyen Q - Scrum Master, QC and Team LeaderTuan Mai A - Technical LeaderHan Le T S - AI EngineerLong Ngo D Q - FE EngineerAnh Nguyen T Q - Business Analyst Tech Stack Frontend: Next JSBackend: Nest.JS, Open AIMobile: Flutter Infrastructure: AWS, Render Recommendation engine: GorseChatbot & Memorizer: RAG 📩 Read more articles about us here: SupremeTech's Blog

            17/10/2025

            147

            Linh Le

            AI

            +1

            • AI-assisted development

            How Human Intelligence and AI Capabilities Can Redefine Software Development | Featuring The 1st Runner-Up of SupremeTech AI Hackathon 2025

            17/10/2025

            147

            Linh Le

            Customize software background

            Want to customize a software for your business?

            Meet with us! Schedule a meeting with us!