Screenshot any Facebook Marketplace listing or Copart lot. Lowballer pulls live comps, prices the repairs, and hands you the exact lowball offer or max bid to make.
CommerceJavaScript · HTMLGitHub @a-ch3nOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Know your number before you make the offer. Screenshot any Facebook Marketplace listing or Copart lot — Lowballer pulls live comps, prices the repairs, and hands you the exact lowball offer or max bid to make.
Three modes: Car (market value − repairs = your offer) · Any item (eBay sold comps → flip profit) · Copart/Salvage (rebuild cost → your max bid).
npm install
cp .env.example .env.local
ANTHROPIC_API_KEY — from https://console.anthropic.com (powers all appraisals)STRIPE_SECRET_KEY + STRIPE_PRICE_ID — create a recurring $30/month price in https://dashboard.stripe.com, use test keys firstSTRIPE_WEBHOOK_SECRET — see Stripe webhook (dev) belowAPP_SECRET — any long random string (openssl rand -hex 32)DATABASE_URL — a Postgres connection string (Neon, Railway, or Vercel Postgres free tiers all work). Also copy it into a plain .env file (Prisma CLI's convention, separate from Next's .env.local) so npx prisma migrate dev works without manually passing it.RESEND_API_KEY + EMAIL_FROM — optional in dev. Without a key, magic-sign-in links print to the server console instead of emailing, so local sign-in still works.npx prisma migrate dev --name init
npm run dev
Open http://localhost:3000. There's no free tier: every non-Pro appraisal runs, shows a short preview, and unlocks for $5 (one-time Stripe Checkout). Pro ($30/mo) gets full results.Subscription status (new subscriptions, cancellations, failed payments) is synced by app/api/stripe/webhook/route.js. To exercise it locally:
stripe listen --forward-to localhost:3000/api/stripe/webhook
This prints a whsec_... value — put it in STRIPE_WEBHOOK_SECRET. Then, in another terminal:
stripe trigger checkout.session.completed
stripe trigger customer.subscription.deleted
In production, add the endpoint in the Stripe dashboard (Developers → Webhooks) pointed at https://<your-domain>/api/stripe/webhook, subscribed to checkout.session.completed, customer.subscription.updated, customer.subscription.deleted, and invoice.payment_failed — then put that endpoint's own signing secret in STRIPE_WEBHOOK_SECRET on the host.
Easiest path is Vercel: push this repo to GitHub, import it at https://vercel.com, add the four env vars (set NEXT_PUBLIC_BASE_URL to your live URL), deploy, then point the lowballer.org domain at it. Switch Stripe to live keys when ready.
This repo ships with a CLAUDE.md so Claude Code understands the architecture immediately.
npm install -g @anthropic-ai/claude-code
cd lowballer
claude
Then just describe what you want: "add a Stripe webhook for cancellations", "add a history page of past appraisals", "make the hero animate on load". Docs: https://docs.claude.com/en/docs/claude-code/overview
app/api/stripe/webhook/route.js)BUILD_SPEC.md Phase 2)/api/appraise to cap your Anthropic API spendlib/rateLimit.js)lib/vehicleAnalysis.js.LINK_SCAN_MODE=all, non-Pro within daily caps): the listing is loaded via ScrapeCreators, then prefilled like a screenshot import. Set SCRAPECREATORS_API_KEY, and LINK_SCAN_MODE / LINK_SCAN_TESTERS to control who sees it — see lib/listingFetch.js.app/api/appraise, which calls Claude (claude-sonnet-4-6) with the web search tool and returns parsed JSON.lib/lockedResults.js) and only a teaser is returned; /api/unlock starts a $5 Stripe Checkout and the webhook / redirect marks the result paid. The paid details never reach the browser before payment.app/api/stripe/webhook/route.js) syncing subscription status onto your account; app/api/checkout/verify is just a fast-path UI nudge, not the real source of truth.