Project Info
Inspiration
💫 Over 70% of college students actively seek jobs and internships, but nearly 1 in 3 fall for phishing emails. In the U.S., over 68 million people receive scam calls each month, with billions lost to fraud annually. Our team experienced this firsthand - one teammate shared their resume and phone number in a fake job offer, while another’s mother lost money to a scam call. These moments weren't just frustrating - they were wake-up calls. We realized that while AI is evolving rapidly, so are social engineering scams, and many users (especially college students and older adults) are left unprotected. These moments inspired us to build PhishFilter - an AI-powered app that detects threats in real time and educates users to stay safe.
What it does
🧠 PhishFilter is a React Native mobile application designed to protect users from two common attack vectors: 1)Real-time Scam Call Detection Using Vapi, we analyze active phone calls for suspicious patterns, tone, and keywords to determine if the caller is likely a scammer. After the call, the app gives users a breakdown of the risk level, what red flags were detected, and what to watch for next time. Email Phishing Detection (Job Scam Focused) Users upload or screenshot suspicious emails (especially job recruitment emails). Using Claude's Opus 4 OCR and language understanding, the app extracts and analyzes the content for phishing indicators like urgency, mismatched domains, and fake sender identities. The app flags the message and provides an explanation, educating the user.
How we built it
🛠️ Frontend: Built with React Native for cross-platform mobile support. Voice Call Analysis: Integrated Vapi to stream real-time call audio to the app, detect scams mid-call, and alert the user live. Phishing Detection: Used Claude Opus 4 with OCR to analyze email screenshots. Fine-tuned prompts to catch job scam patterns targeting students and job seekers. Backend: FastAPI to interface with Claude for phishing detection.
Challenges we ran into
🥲 Claude OCR Confusion: It took around 5 hours to get OCR to work! We were using Claude without realizing we needed to route requests specifically to Claude Opus 4. We did the good ol' debug print statements to figure out issues. Once we figured that out, everything sped up. Frontend UI Design: Creating a clean, intuitive UI in React Native that could show real-time scam detection — without overwhelming the user — took several design iterations. We wanted it to feel informative, not technical. Connecting Frontend and Backend: Getting Claude’s output (especially from OCR) to talk smoothly with the frontend was tricky. Parsing the text results and rendering them clearly in-app required a lot of back-and-forth debugging. Vapi Integration: Reading Claude’s response programmatically and passing it into Vapi’s voice synthesis was a challenge. We had to map the scam content and safety explanation into natural-sounding speech while syncing it with the app UI. WebSocket Stability: Our server WebSocket kept timing out during longer OCR processing. We had to rework the socket flow to support longer wait times and reconnect if needed — not fun at 2am!
Accomplishments we're proud of
Reduced scam detection latency by 80%: Our final pipeline detects and responds to scam signals significantly faster than our initial baseline. OCR time improved by over 5 seconds: By switching to Claude Opus 4 and optimizing our routing, we made OCR processing much faster and more efficient. Successfully integrated Vapi for live scam call detection: We connected real-time voice output with scam detection results, creating an immersive and interactive user experience.
What we learned
📚 How to work with the Vapi API, including voice output, call forwarding, and call logs. How to use Claude for OCR, and how different Claude models affect performance and accuracy. How to buffer Claude’s output in real-time and pass it smoothly into the frontend without blocking the UI. A lot about building a more thoughtful, user-centered frontend — especially how to balance visual clarity with technical feedback.
What's next
🌎 Launch the app on the App Store and Google Play. Add a learning center with interactive simulations of scam scenarios. Expand phishing detection to support multilingual content and more scam formats (e.g., text messages, social DMs). Partner with universities and career centers to offer PhishFilter as a tool for student safety and job scam awareness.
📱 PhishFilter
PhishFilter is an AI-powered mobile application designed to protect users from two of the most common social engineering attack vectors: scam calls and phishing emails, with a focus on job scams targeting students and job seekers.
💫 Inspiration
Over 70% of college students actively seek jobs and internships, but nearly 1 in 3 fall for phishing emails. In the U.S., over 68 million people receive scam calls every month, resulting in billions lost to fraud annually.
Our team experienced this firsthand—one teammate was tricked into sharing their resume and phone number in a fake job offer, and another’s mother lost money to a scam call. These personal incidents were wake-up calls that inspired us to build PhishFilter: a mobile app that not only detects threats in real time but also educates users to stay safe.
🧠 What It Does
📞 Real-time Scam Call Detection
- Uses Vapi to analyze live call audio.
- Detects scam patterns mid-call and alerts users in real time.
- Gives a post-call risk summary.
📧 Email Phishing Detection
- Users upload or screenshot suspicious emails.
- Uses Claude Opus 4 with OCR to find phishing signs (urgency, fake senders, etc.).
- Flags risky emails and explains why.
Includes a Learning Hub to help users stay informed and safe.
🛠️ Tech Stack
- Frontend: React Native, Tailwind CSS
- Backend: FastAPI (Claude API), Firebase / Supabase
- AI Tools: Claude Opus 4 (OCR + phishing detection), Vapi (call audio analysis)
🧩 Challenges
- Claude OCR processing delays due to prompt chaining issues.
- UI design needed several iterations for clear real-time feedback.
- Learned to fine-tune prompt usage for more accurate results.
✅ Next Steps
- Launch on iOS & Android.
- Add interactive learning simulations.
- Support text message & social media scam detection.
- Partner with schools and career centers.
🔧 Built With
📄 License
MIT
Analysis
View
Metric
- 9
- 7
- 6
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- JavaScriptIn code
- PythonIn code
- ReactIn code
- SupabaseIn code
- TypeScriptIn code
- FastAPIClaimed
- Tailwind CSSClaimed
5 of 7 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
36 KB
Source files
20
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
lizatinku/BerkAI25-PhishFilter
38 files · 1.1 MB · @ 782534a
Structure
Interface
5 files · 13%Screens, components and styles rendered to the user.
Application logic
15 files · 39%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript70%
- Python16%
- Markdown9%
- JavaScript5%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 34- @expo/metro-runtime
- @expo/vector-icons
- @react-native-community/datetimepicker
- @react-navigation/bottom-tabs
- @react-navigation/native
- @react-navigation/native-stack
- @supabase/supabase-js
- expo
- expo-asset
- expo-constants
- expo-font
- expo-image-picker
- expo-location
- expo-router
- expo-status-bar
- expo-web-browser
- leaflet
- nativewind
- +16 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.