Inspiration
Job searching has moved heavily onto social media platforms, especially for college students and early career job seekers. While this creates more opportunities, it also opens the door for sophisticated job scams. We noticed that many scam messages look professional, create urgency, and promise unrealistic pay, making them difficult to distinguish from legitimate offers.
Reports show job scam losses rising from about $90 million in 2020 to over $500 million in 2024, and younger adults are more than five times more likely to fall victim. Seeing how these scams lead to financial loss, identity theft, and mental stress inspired us to build a solution that protects users before they take action.
What it does
OfferLens is an AI powered safety layer that detects job scams in real time. Users can upload job descriptions, LinkedIn messages, emails, or PDFs. The system analyzes the content and generates:
- A risk score
- Safety checklist
- Recommended actions
- AI generated safe reply
- Detailed explanation of detected risks
- Analysis history
By combining multiple detection signals, OfferLens helps users make safer decisions during their job search.
How we built it
We first built a rapid prototype using Base44 with natural language prompts to design the workflow. Then we implemented a three signal risk scoring system.
Machine Learning Detection We fine tuned a DistilBERT model using job posting and scam datasets. The model analyzes contextual meaning rather than just keywords, allowing it to detect sophisticated scam patterns.
The trained model was deployed using FastAPI so it can run as a backend service. Instead of downloading the model each time, we store the trained weights in the repository and load them directly at server startup for faster and more stable performance.
URL Safety Detection We extract URLs using regular expressions and check them with Google Safe Browsing API. Malicious links increase the risk score.
Keyword Signal Detection We built two keyword groups:
- Suspicious keywords based on urgency, unrealistic benefits, off platform communication, and payment requests
- Legitimate indicators based on structured hiring processes and verifiable company information
Risk Score Calculation The final risk score is computed using a weighted combination:
Risk = 0.6×ML + 0.2×Keywords + 0.2×URL
This balanced approach improves reliability while keeping real time performance.
Challenges we ran into
- Collecting and cleaning realistic job scam datasets for training
- Reducing false positives when legitimate offers include urgent language
- Deploying the NLP model for fast real time inference
- Handling different input formats such as text, PDFs, and copied messages
- Designing a risk score that is interpretable and actionable for users
Accomplishments that we're proud of
- Building an end to end AI scam detection system in real time
- Successfully fine tuning and deploying DistilBERT for contextual scam detection
- Combining machine learning, keyword logic, and URL safety checks into one score
- Creating actionable outputs like safe replies and safety checklists
- Delivering a working MVP that protects users before they engage with scammers
What we learned
- Context aware NLP models outperform simple keyword filters
- Combining multiple signals reduces bias and improves detection accuracy
- User trust increases when risk scores are transparent and explainable
- Real world security tools must balance accuracy and usability
- Rapid prototyping accelerates iteration before implementing complex ML systems
What's next for Offer Lens
- Launch a live MVP with browser extension support
- Improve accuracy using real user feedback and additional training data
- Add screenshot and image based scam detection
- Expand beyond job scams to other social media fraud
- Integrate directly with platforms like LinkedIn and email clients
- Build a community driven scam reporting system
Built With
- base44
- fastapi
- googlecolab
- googlesafebrowsingapi
- javascript
- pandas
- python
- react
- render.com
Log in or sign up for Devpost to join the conversation.