import React, { useState } from 'react'; import { Camera, Phone, Mail, AlertTriangle, Trophy, Zap, Target, Clock, FileText, Mic, Share2 } from 'lucide-react'; const GaslightingTracker = () => { // Active case state: which case is highlighted const [activeCase, setActiveCase] = useState('afca'); // Running tally of the global gaslighting score const [gaslightingScore] = useState(9847); // Inputs and results for response generator const [newSubmission, setNewSubmission] = useState(''); const [responseGenerated, setResponseGenerated] = useState(''); const [isGenerating, setIsGenerating] = useState(false); // User story submission for bloggers/commenters const [userStory, setUserStory] = useState(''); const [storyClipboardMsg, setStoryClipboardMsg] = useState(''); // Live “case studies” of institutional gaslighting const liveCases = { afca: { name: "AFCA (Champion)", status: "Active Gaslighting", caseNumbers: ["12-25-256067", "CRM:02084000001535", "CRM:02088000001181"], gaslightingLevel: 10, techniques: [ "Schrödinger's Complaint (exists and doesn't exist)", "Auto-Close System Blame", "Circular Logic Mastery", "Customer Service Suggestion After Months" ], latestMove: "Suggests calling after months of email exchanges", color: "from-red-500 to-red-700", icon: "🏛️" }, arma: { name: "ARMA Debt Collection", status: "Helpful Threat Active", caseNumbers: ["76980560"], gaslightingLevel: 8, techniques: [ "Friendly Debt Collection", "We're Here to Help (Pay Us)", "Financial Difficulty Sympathy Theater" ], latestMove: "$461.37 overdue with caring tone", color: "from-orange-500 to-orange-700", icon: "🚗" }, art: { name: "Australian Retirement Trust", status: "Security Theater", caseNumbers: ["MFA-2025"], gaslightingLevel: 7, techniques: [ "Security While Withholding Funds", "MFA Compliance Theater", "Account Protection Irony" ], latestMove: "Multi-factor auth while blocking access", color: "from-blue-500 to-blue-700", icon: "💰" } }; // Famous phrases you might hear from institutional gaslighting const gaslightingPhrases = [ "We received your correspondence; however, we do not have enough information", "The complaint has been automatically closed by our system", "I suggest you call afca and talk to one of our customer service officers", "We're here to help with your outstanding balance", "For your security, we're implementing additional verification", "This matter has been escalated to our specialized team", "We understand your frustration, however...", "As per our previous correspondence which you may not have received..." ]; // Fun/professional response generator for satirical replies const generateResponse = async () => { setIsGenerating(true); await new Promise(resolve => setTimeout(resolve, 2000)); const responses = [ `Dear [Institution Name], Thank you for your email demonstrating peak bureaucratic artistry. I'm particularly impressed by your Schrödinger's Complaint approach - simultaneously received and not received. I have documented this correspondence as Exhibit #${Math.floor(Math.random() * 100)} in my growing collection of institutional gaslighting. Your technique scores ${Math.floor(Math.random() * 3) + 8}/10 on the Kafka Scale. I suggest YOU call ME when you've decided whether my complaint exists in your quantum filing system. Regards, Someone Who Records Everything`, `To Whom It May Concern (Or Pretends Not To), I acknowledge receipt of your non-acknowledgment of my complaint that both exists and doesn't exist in your parallel universe filing system. Your automated system's decision to close what was never opened demonstrates cutting-edge bureaucratic innovation. I'm forwarding this to my legal team who specialize in institutional comedy. Please don't suggest I call you. I have better things to do than engage with customer service roulette. Best regards, A Person With Functioning Brain Cells`, `Dear Gaslighting Champions, Congratulations! You've achieved new heights in bureaucratic absurdity. Your ability to receive correspondence while simultaneously lacking information is truly inspirational. I'm creating a case study of your techniques for my "Institutional Gaslighting Hall of Fame." Your performance deserves recognition. I'll be sharing this exchange with relevant ombudsmen who appreciate fine examples of administrative creativity. Sincerely, Your Biggest Fan (and Biggest Problem)` ]; setResponseGenerated(responses[Math.floor(Math.random() * responses.length)]); setIsGenerating(false); }; // Blogger helper: copy story to clipboard const copyStory = () => { navigator.clipboard.writeText(userStory); setStoryClipboardMsg('Copied! Paste it into your blog, newsletter, or comments.'); setTimeout(() => setStoryClipboardMsg(''), 2000); }; // The current case being analyzed const currentCase = liveCases[activeCase]; return (
{/* BLOGGER HEADLINE */}

🎯 Live Institutional Gaslighting Command Center

Welcome, bloggers & sleuths: monitor, expose, and share the oddest examples of bureaucratic gaslighting, AI-style.

{/* Scoreboard and quick stats */}
Gaslighting Score: {gaslightingScore.toLocaleString()}
Active Cases: {Object.keys(liveCases).length}
{/* Blogger Case Selector */}

🏆 Select a Case Study

Click on a tile to dive deep into real-life examples – perfect for referencing in exposés, articles, or radio/podcast segments.

{Object.entries(liveCases).map(([key, case_]) => ( ))}
{/* Case details area */}

{currentCase.icon} {currentCase.name} – {currentCase.status}

Level {currentCase.gaslightingLevel}/10

Techniques Detected

    {currentCase.techniques.map((technique, index) => (
  • {technique}
  • ))}

Case Numbers & Latest Move

{currentCase.caseNumbers.map((num, index) => (
{num}
))}

Latest Move: {currentCase.latestMove}

{/* Satirical Response Generator */}

Counter-Gaslighting Response Generator

Paste a gaslighting email here, and get a ready-to-share satirical response for your article or social post.