FAQ Chatbot for Small Businesses on the Web Using Semantic Search and Response Ranking - Abi Armansyah; Ari Muzakir; Evi Yulianingsih (J-INTECH ( Journal of Information and Technology), 2026)
Small businesses often handle customer questions through manual replies via chat applications or phone calls, causing repetitive work, delayed responses, and inconsistent information delivery. This study proposes a web-based FAQ chatbot that answers user questions by performing semantic search over an Indonesian FAQ knowledge base and ranking the most relevant response. The chatbot applies a lightweight information retrieval approach using TF-IDF vectorization and cosine similarity to compute the relevance score between the user query and FAQ entries (question and tags). The system then selects the top-ranked FAQ entry and returns its associated answer, meaning the semantic matching is performed at the question-to-question level, not directly between questions and answers. The top results are ranked, and the chatbot returns the best answer along with a confidence score and the top three candidate questions to increase transparency. If the score is below a predefined threshold, the system provides a fallback response and suggests related topics rather than forcing an incorrect answer. The system is implemented as a PHP–MySQL web application with an administrator dashboard that supports secure login, FAQ CRUD management, chat logging, and usage analytics. Functional verification is conducted using black-box testing across main modules, including authentication, FAQ management, chatbot interaction, logging, and analytics dashboards. The expected contribution of this work is a practical and low-cost chatbot solution that can be deployed by small businesses to reduce repetitive customer service workload, accelerate response time, and provide measurable service insights through log-based analytics. Future improvements include expanding the knowledge base, enhancing Indonesian text normalization, and adopting embedding-based retrieval for better semantic matching.