Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Spot investment scam red flags instantly. ScamDunk analyzes stock pitches for pump-and-dump signals, volume anomalies, and manipulation patterns.
FinanceTypeScript · PythonGitHub @Elimiz21OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
new scam dunk by claude code
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
ScamDunk - Stock Scam Red Flag Detector
ScamDunk is a web application that helps retail investors identify potential scam-like red flags in stock pitches they receive. Users enter a stock ticker and the pitch text, and the app analyzes both market data and behavioral patterns to surface potential risks.Read the full README ↗ScamDunk is a web application that helps retail investors identify potential scam-like red flags in stock pitches they receive. Users enter a stock ticker and the pitch text, and the app analyzes both market data and behavioral patterns to surface potential risks.
scamdunk/
├── prisma/
│ └── schema.prisma # Database schema
├── src/
│ ├── app/
│ │ ├── (auth)/
│ │ │ ├── login/ # Login page
│ │ │ └── signup/ # Signup page
│ │ ├── (protected)/
│ │ │ ├── account/ # Account management page
│ │ │ └── check/ # Main stock check page
│ │ ├── api/
│ │ │ ├── auth/ # NextAuth routes + register
│ │ │ ├── billing/ # PayPal config/activate/cancel/subscription
│ │ │ ├── check/ # Main stock analysis endpoint
│ │ │ └── user/usage/ # Usage tracking endpoint
│ │ ├── globals.css # Global styles + CSS variables
│ │ ├── layout.tsx # Root layout with SessionProvider
│ │ └── page.tsx # Landing page
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── LimitReached.tsx # Limit reached component
│ │ ├── LoadingStepper.tsx # Loading progress component
│ │ └── RiskCard.tsx # Risk analysis result display
│ ├── lib/
│ │ ├── auth.config.ts # Edge-compatible auth config
│ │ ├── auth.ts # Full auth config with providers
│ │ ├── billing.ts # PayPal integration
│ │ ├── config.ts # App configuration
│ │ ├── db.ts # Prisma client singleton
│ │ ├── marketData.ts # Alpha Vantage API integration
│ │ ├── narrative.ts # OpenAI narrative generation
│ │ ├── scoring.ts # Risk scoring engine
│ │ ├── types.ts # TypeScript types
│ │ ├── usage.ts # Usage tracking
│ │ └── utils.ts # Utility functions
│ ├── middleware.ts # Route protection middleware
│ └── tests/
│ └── scoring.test.ts # Scoring logic tests
├── .env.example # Example environment variables
├── package.json
├── tailwind.config.ts
└── tsconfig.json
Clone the repository:
git clone https://github.com/Elimiz21/scam-dunk-re-write-claude-code.git
cd scam-dunk-re-write-claude-code
Install dependencies:
npm install
Set up environment variables:
cp .env.example .env
# Edit .env with your values
Set up the database:
npx prisma generate
npx prisma db push
Run the development server:
npm run dev
Create a .env file with the following variables:
# Database (PostgreSQL/Supabase)
DATABASE_URL="postgresql://user:password@host:5432/database"
DIRECT_URL="postgresql://user:password@host:5432/database"
# NextAuth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
# OpenAI (for narrative generation)
OPENAI_API_KEY="sk-..."
# Alpha Vantage (for real market data)
ALPHA_VANTAGE_API_KEY="your-key"
# PayPal (for subscription processing)
PAYPAL_CLIENT_ID="your-paypal-client-id"
PAYPAL_CLIENT_SECRET="your-paypal-client-secret"
PAYPAL_PLAN_ID="P-..."
PAYPAL_WEBHOOK_ID="your-webhook-id" # optional, for webhook verification
PAYPAL_MODE="sandbox" # "sandbox" or "live"
# Supabase (optional - for direct access)
NEXT_PUBLIC_SUPABASE_URL="https://xxx.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="eyJ..."
id: Primary key (cuid)email: Unique email addresshashedPassword: Bcrypt hashed passwordname: Optional display nameplan: "FREE" or "PAID"billingCustomerId: PayPal subscription IDid: Primary keyuserId: Foreign key to UsermonthKey: Format "YYYY-MM"scanCount: Number of scans this monthPOST /api/auth/registerRegister a new user with email/password.
POST /api/checkMain stock analysis endpoint. Requires authentication.
Request Body:
{
"ticker": "ABCD",
"pitchText": "This stock is going to 10x...",
"context": {
"unsolicited": true,
"promisesHighReturns": false,
"urgencyPressure": false,
"secrecyInsideInfo": false
}
}
Response:
{
"riskLevel": "HIGH",
"totalScore": 9,
"signals": [...],
"stockSummary": {...},
"narrative": {...},
"usage": {...}
}
GET /api/user/usageGet current user's usage information.
GET /api/billing/paypal/configReturn the public PayPal client/plan IDs used to render the subscribe button.
POST /api/billing/paypal/activateActivate a PayPal subscription after the buyer approves it.
POST /api/billing/paypal/cancelCancel the current user's active PayPal subscription.
The scoring system is deterministic - no LLM is used for scoring, only for generating human-readable narratives.
| Category | Signals |
|---|---|
| STRUCTURAL | MICROCAP_PRICE (price < $5), SMALL_MARKET_CAP (< $300M), MICRO_LIQUIDITY (< $150k/day), OTC_EXCHANGE |
| PATTERN | SPIKE_7D (50%+ or 100%+ in 7 days), VOLUME_EXPLOSION (5x or 10x average), SPIKE_THEN_DROP |
| ALERT | ALERT_LIST_HIT (regulatory alerts) |
| BEHAVIORAL | UNSOLICITED, PROMISED_RETURNS, URGENCY, SECRECY, SPECIFIC_RETURN_CLAIM |
| Signal | Weight |
|---|---|
| MICROCAP_PRICE | 2 |
| SMALL_MARKET_CAP | 2 |
| MICRO_LIQUIDITY | 2 |
| OTC_EXCHANGE | 3 |
| SPIKE_7D (50-99%) | 3 |
| SPIKE_7D (100%+) | 4 |
| VOLUME_EXPLOSION (5-9x) | 2 |
| VOLUME_EXPLOSION (10x+) | 3 |
| SPIKE_THEN_DROP | 3 |
| ALERT_LIST_HIT | 5 |
| UNSOLICITED | 1 |
| PROMISED_RETURNS | 2 |
| URGENCY | 2 |
| SECRECY | 2 |
| SPECIFIC_RETURN_CLAIM | 1 |
Authentication uses NextAuth.js v5 with:
The auth system is split into two files:
auth.config.ts: Edge-compatible configuration (used by middleware)auth.ts: Full configuration with bcryptjs (used by API routes)Run the test suite:
npm test
Tests cover:
Build the project:
npm run build
Start the production server:
npm start
npm testnpm run buildMIT License
For issues and feature requests, please use GitHub Issues.