Why SafeSurf#
We wanted to explore how a web platform could help people recognize and respond to online scams before they become victims.
The project started as our capstone project, but we wanted to approach it as more than a collection of security tools. The goal was to bring several useful functions into one place: scam analysis, link checking, community reporting, educational resources, and reporting guidance.

AI Chatbot Integration#
We wanted users to have a simple way to ask questions when something online felt suspicious, without needing to understand cybersecurity terminology.
We built Wave, an AI chatbot designed specifically around online scams, cybersecurity, and online safety in the Philippine context.
Wave can analyze user-submitted text, explain potential scam indicators, answer cybersecurity-related questions, and provide safety guidance. We integrated the Gemini API to handle the chatbot's responses and configured its behavior through system instructions.

The Gemini integration manages the model configuration, generation settings, system instructions, chat session, and user message processing.
import os
import google.generativeai as genai
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# Create the model
generation_config = {
"temperature": 1.2,
"top_p": 0.9,
"top_k": 40,
"max_output_tokens": 700,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-flash",
generation_config=generation_config,
system_instruction="You are Wave, a text-based chatbot from SafeSurf designed to help users:\n\nUnderstand and combat online scams in the Philippines.\nLearn about cybersecurity and online safety best practices.\nAnalyze user-submitted text to detect and explain potential scams.\nYou interact exclusively through text and focus on these topics only.\nCore Rules and Behaviors\n\nScope of Assistance\nYou are only allowed to:\n\nProvide information and advice on online scams, cybersecurity, and online safety.\nEvaluate user-submitted text for potential scams.\nYou...",
)
chat_session = model.start_chat(
history=[
]
)
def get_bot_response(user_message: str) -> str:
"""
Takes user message, sends it to the model, and returns the bot's response.
"""
response = chat_session.send_message(user_message)
return response.textLink Detection#
The Link Checker was designed around two sources of information rather than relying on a single detection method.
The first is the VirusTotal API, which provides analysis for submitted URLs. The second is the platform's own collection of community-reported suspicious or malicious links.
This allows SafeSurf to consider both external threat intelligence and reports submitted by users.


The community side also creates a feedback loop: users can report suspicious links, and those reports can become part of the information available through the community Link Checker.

Scam Reporting#
We included a reporting workflow that allows users to submit suspicious links they encounter online.
Rather than treating reporting as a completely separate feature, we connected it to the platform's community-driven link checking system. Submitted links can contribute to a shared collection of reported threats that other users can reference.
The platform also provides users with reporting resources and contact information for relevant Philippine agencies, helping them find the appropriate channels when they need to report an actual scam or cybercrime incident.
Safety Resources#
Detection is only one part of preventing scams. We also wanted SafeSurf to help users understand what they're seeing and recognize common scam tactics.
The Resource Hub provides educational content covering common scams, online safety practices, and cybersecurity awareness. We also added a posting feature where users can share useful information and educational content with the community.
To make cybersecurity topics easier to understand, our teammate Nicole Yleana created short video animations that explain scam-related topics in a more visual and accessible way. These videos can be shared through the posting feature, allowing users to learn about potential threats without having to rely entirely on long-form text.

System Architecture#
Django handled the application's backend and core functionality, while MySQL was used for data storage. Bootstrap was used for the frontend interface, and external services provided AI and URL analysis capabilities.

The project required connecting multiple components into a single workflow: user input, backend processing, database operations, external API requests, and the resulting information presented back to the user.
Working across these components gave us hands-on experience with API integration, backend development, database management, and interconnected application workflows.
The Result#
SafeSurf became a platform that brings together AI-assisted scam analysis, URL checking, community reporting, cybersecurity education, and reporting resources in one place.
Rather than building a single-purpose scanner, we created a system that gives users several ways to identify, understand, report, and learn about potential online scams.
The project gave us practical experience building and connecting a complete web application using Django, MySQL, Gemini API, VirusTotal API, and REST APIs.

