Inspiration

In the digital age, a brand's reputation can be ruined overnight. Counterfeiters and unauthorized resellers hijack Amazon listings constantly — slashing prices below MSRP, rewriting titles with SEO-stuffed garbage, or gutting bullet points that took real work to craft. By the time a brand owner notices, sales and reputation are already damaged, and filing a DMCA/IP takedown is a slow, manual, form-heavy process. BrandArmor was built to turn that reactive scramble into a real-time, automated command center . We built BrandArmor to democratize brand protection, giving businesses of all sizes an automated, AI-powered shield to defend their intellectual property.

What it does

BrandArmor is a B2B SaaS dashboard that monitors a seller's Amazon ASINs for "listing drift" — unauthorized price drops, title changes, or bullet-point degradation — and flags them as severity-tiered alerts (Critical/Warning) on an animated "Global Threat Ring" that shifts from emerald to amber to neon crimson. Sellers get live telemetry (monitored ASINs, active hijacks, resolved takedowns), a side-by-side visual diff of the authorized vs. hijacked listing, and a slide-out DMCA Takedown Drawer that auto-populates a formal Amazon IP Infringement Notice, captures a digital signature, and files it with one click.

How we built it

The frontend is Next.js 16 (App Router, TypeScript) with Tailwind CSS v4 and Lucide icons, deployed on Vercel as serverless functions. Data lives in a single-table AWS DynamoDB design (PAY_PER_REQUEST billing) with one table handling global analytics, monitored product records, and per-product alert history via composite PK/SK keys. Five typed API routes handle seeding mock data, computing dashboard stats, listing products with alert history, simulating a "drift engine" that injects unauthorized changes to test the system, and processing takedown submissions. A Browser Sandbox Mode lets the whole demo run with zero AWS credentials.

Challenges we ran into

Designing a single-table DynamoDB schema that could serve three very different access patterns — global metrics, per-user product lists, and per-product alert timelines — without resorting to multiple tables or expensive scans took careful key design. Keeping AWS costs near zero while still supporting real-time-feeling updates meant leaning entirely on on-demand billing and parallel queries rather than provisioned capacity or always-on infrastructure. Simulating realistic "hijack" events (price drops, title drift, bullet-point drift) convincingly enough for a demo, without live Amazon API access, also required building a self-contained drift simulation engine.

Accomplishments that we're proud of

Getting the whole system — DynamoDB backend, drift detection, alerting, and a legally-formatted DMCA filing flow — running end-to-end for under $1/month in projected AWS costs. The sandbox mode means anyone can clone the repo and see the full feature set without ever touching an AWS console. The animated Threat Ring and the visual listing diff also turn what's normally a dry compliance tool into something that actually feels urgent and alive when a hijack hits.

What we learned

A lot about DynamoDB single-table design patterns — overloading PK/SK pairs to model multiple item types in one table, and structuring queries so they stay fast and cheap as data grows. We also learned how much UX work goes into making "boring" B2B tooling (compliance, legal takedowns) feel responsive and trustworthy rather than just functional.

What's next for Brand Armor

Real-time WebSocket alerts via AWS API Gateway instead of polling

Email notifications through Amazon SES on critical drift events

AI-powered counterfeit image detection using Amazon Rekognition

Historical analytics with 30-day hijack trend charts

Multi-marketplace support (Amazon EU, JP, CA)

Multi-brand / multi-seller account management for agencies managing several clients.

Built With

  • a-cron-style-drift-simulation-endpoint-(/api/cron/check-listings)
  • amazon-dynamodb
  • and-a-dmca-takedown-handler-(/api/alerts/takedown)-other:-a-built-in-browser-sandbox-mode-that-runs-the-full-feature-set-without-any-aws-credentials
  • aws-sdk
  • dashboard-products
  • dashboard-stats
  • eslint-for-linting-apis:-five-custom-next.js-api-routes-?-seed-(/api/db/seed)
  • javascript
  • javascript-framework:-next.js-16.2-(app-router)-styling:-tailwind-css-v4
  • low-level-db-access-vercel-for-hosting-and-serverless-function-deployment-iam-with-a-least-privilege-policy-scoped-to-the-single-brandarmor-table-arn-runtime/tooling:-bun-1.2-for-package-management-and-dev-server
  • lucide
  • nextjs
  • pay-per-request-(on-demand)-billing-cloud-/-infra:-aws-dynamodb-for-data-storage-aws-sdk-v3-(@aws-sdk/client-dynamodb-+-@aws-sdk/lib-dynamodb)-for-typed
  • plus-vanilla-css-for-the-glow/pulse-animations-on-the-threat-ring-icons:-lucide-react-database:-aws-dynamodb-?-single-table-design
  • react
  • tailwind
  • typescript
  • vercel
Share this project:

Updates