⚠️ All Rights Reserved. This repository is published for viewing and portfolio purposes only. The code is not open source: reuse, redistribution, modification, or derivative works are not permitted without written permission. See LICENSE.
🔴 Live Demo · 📖 API Docs · ⭐ Star this repo
BullshiftDetector is a full-stack AI application that analyzes LinkedIn posts for corporate buzzwords, hollow humility, and performative authenticity, then roasts them with Claude AI.
💡 Tired of "Humbled and excited to announce"? So are we. So we built a detector.
- 🎯 Cringe Score (0–100) · AI-powered scoring of how much bullshift is in the post
- 💩 Buzzword Detection · highlights offending words in real time
- 🔥 The Roast · one savage AI-generated one-liner about the post
- ✅ Clean Rewrite · what they should have said like a normal human
- 📋 Copy & Share · copy the clean version or share your cringe score to LinkedIn
- 🌗 Dark / Light Mode · because we're professional like that
| Layer | Technology |
|---|---|
| 🧠 AI Engine | Claude API (claude-sonnet-4-5) |
| ⚙️ Backend | FastAPI + Python 3.12 |
| 🎨 Frontend | Next.js 14 + Tailwind CSS |
| ☁️ Backend Deploy | GCP Cloud Run |
| 🔥 Frontend Deploy | Firebase Hosting |
| 📦 Container | Docker |
| 🔁 CI/CD | GCP Cloud Build |
User pastes LinkedIn post
↓
FastAPI backend receives request
↓
Claude API analyzes for buzzwords, cringe score, roast & rewrite
↓
Returns structured JSON response
↓
Next.js frontend renders animated results
git clone https://github.com/rohithkandula19/BullshiftDetector.git
cd BullshiftDetectorcd backend
python3.12 -m venv venv
source venv/bin/activate
cp .env.example .env
# add your ANTHROPIC_API_KEY to .env
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8080Backend: http://localhost:8080
Swagger: http://localhost:8080/docs
cd frontend
cp .env.example .env.local
# set NEXT_PUBLIC_API_URL=http://localhost:8080
npm install
npm run devFrontend: http://localhost:3000
Request:
{
"post": "Humbled and excited to announce..."
}Response:
{
"score": 89,
"buzzwords": ["humbled", "excited to announce", "grateful"],
"roast": "Congratulations on saying absolutely nothing in 47 words.",
"clean": "I got a new job. Thanks everyone.",
"verdict": "PURE UNCUT BULLSHIFT"
}cd backend
gcloud artifacts repositories create bullshift \
--repository-format=docker \
--location=us-central1
gcloud builds submit \
--tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/bullshift/bullshift-backend
gcloud run deploy bullshift-backend \
--image us-central1-docker.pkg.dev/YOUR_PROJECT_ID/bullshift/bullshift-backend \
--platform managed \
--region us-central1 \
--allow-unauthenticated \
--set-env-vars ANTHROPIC_API_KEY=your_key_herecd frontend
npm run build
firebase deploy --only hostingbullshiftdetector/
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── routes/detect.py
│ │ ├── services/claude_service.py
│ │ └── models/schemas.py
│ ├── requirements.txt
│ ├── Dockerfile
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── app/page.tsx
│ │ ├── components/
│ │ │ ├── CringeMeter.tsx
│ │ │ └── HighlightedPost.tsx
│ │ └── lib/api.ts
│ ├── package.json
│ └── firebase.json
└── README.md
Because I got tired of seeing "Humbled and excited to announce" for the 47th time this week.
Also, it makes recruiters laugh. And laughing recruiters give offers. 😂
built with 🤖 Claude API · no posts stored · roasts fictional · zero bullshift tolerance 💩