See the product pitch and a 1 minute version of the demo video at pitch.doppelspotter.com.
Inspiration
The launch of GenAI Zürich's Hackathon coincided with a challenge I'd been set by our legal counsel: Could we use AI to help us to monitor threats to out brand?
The Apify track felt like a perfect fit - ready built web scrapers to track down the raw data that I'd need to analyse!
Our challenge: large enterprises can afford dedicated brand-protection teams and expensive monitoring tools, but smaller businesses like us can't.
For many SMEs, brand abuse is still a manual process of Googling themselves, checking social platforms one by one, and hoping they notice a fake community, clone app, impersonation account, or lookalike domain before customers do.
I wanted to build something that feels less like a passive alert feed and more like an always-on AI analyst for brand protection. The goal behind DoppelSpotter was to give smaller teams a practical way to monitor multiple public surfaces, reduce noise, and surface the threats that actually deserve attention.
What it does
DoppelSpotter helps businesses detect potential brand abuse across the public web and then turns noisy search results into actionable intelligence.
Users create a brand profile with keywords, official domains, and optional watch words or safe words. From there, they can choose which sources to scan, how deep to search, how far back to look, and whether AI should run follow-up deep searches on supported sources.
When a scan starts, DoppelSpotter launches multiple Apify actors in parallel across web search, Reddit, TikTok, YouTube, Facebook, Instagram, Telegram, Apple App Store, Google Play, Discord servers, GitHub repositories, EUIPO trademark filings, X, and recent domain registrations.
As results come back, the app normalises them, deduplicates them, filters historical repeats, and uses AI to classify findings by severity, suppress false positives, assign lightweight themes, and generate a concise scan summary.
The product also supports the workflow after detection. Users can search and filter findings, bookmark important items, ignore false positives, mark issues as addressed, add notes, export CSV and PDF evidence, view dashboard analytics, and optionally receive a scan-summary email when a scan completes.
How I built it
DoppelSpotter was built using Cursor (predominantly using Claude Sonnet 4.6, Claude Opus 4.6 - and since it launched in early March, GPT 5.4).
I built DoppelSpotter as a full-stack Next.js application with TypeScript and Tailwind CSS, backed by Firestore for persistent data storage. The core monitoring workflow is powered by Apify actors and Apify webhooks, while OpenRouter powers the AI analysis layer.
The scanning pipeline starts by resolving each brand's settings into a concrete scan plan. The app then launches all relevant actor runs concurrently and stores their run metadata. When Apify sends webhook callbacks, the backend fetches each dataset, converts the raw output into source-specific normalised candidates, deduplicates repeated items, suppresses results that have already been seen in earlier scans, and sends compact batches to the LLM for classification.
I also built two reusable Apify actors and published them to the Apify Store. doppelspotter/recent-domain-registrations monitors newly registered domains that match a brand's keywords and can optionally visit matching homepages and use AI to summarise what is actually on the site, giving much richer context than a raw domain list alone. doppelspotter/euipo-trademark-search queries the EU Intellectual Property Office trademark registry, handling multi-word brand names with wildcard RSQL queries and caching OAuth2 tokens with expiry-aware refresh logic.
On top of the core pipeline, I built the product experience needed to make the results genuinely useful: brand configuration, scheduled scanning, scan progress, finding review actions, searchable history, dashboard analytics, and export/reporting features. The result is not just a demo of AI classification, but a full workflow for discovering, triaging, and following up on suspicious activity.
Challenges I ran into
One of the biggest challenges was dealing with the fact that every scan source has a different data shape. Google results, TikTok videos, Reddit posts, Discord servers, GitHub repositories, EUIPO trademark filings, X posts, and newly registered domains all require different normalisation logic before they can be compared or classified in a consistent way.
Another major challenge was balancing recall with precision. It is easy to collect lots of potentially relevant results, but much harder to avoid overwhelming the user with noise. A lot of effort went into deduplication, historical repeat suppression, source-aware prompting, and user feedback loops so the system could stay broad without becoming spammy.
I also had to think carefully about orchestration and resilience. Because scans launch multiple actor runs in parallel and complete asynchronously via webhooks, I needed the backend to handle race conditions, duplicate callbacks, deep-search follow-up runs, and partial failures without leaving the scan state inconsistent.
Accomplishments that I'm proud of
I'm super proud that DoppelSpotter is a real end-to-end product, not just a thin wrapper around one API. It covers the full user journey from brand setup, to live multi-source monitoring, to AI triage, to reporting and follow-up.
It would have been impossible to develop such a rich solution without AI (Cursor). An app like this would have taken me months to develop without it. Instead, it took just over a week.
I'm also proud of the breadth of coverage. The app monitors fourteen logical scan surfaces across web search, social platforms, messaging communities, app stores, code repositories, trademark filings, and recent domain registrations, all through a single workflow.
Another accomplishment I'm particularly proud of is publishing two reusable Apify actors - one for recent domain registrations and one for EUIPO trademark search - it's great to have been able to contribute something useful back to the Apify ecosystem.
Finally, I'm proud to have been able to use Gen and Agentic AI in a practical way throughout the project:
- Translating my unsorted ideas into a viable pitch which cross-referenced the challenge brief
- Designing the technical architecture for the app
- Developing, testing and deploying the app
- Developing the pitch site
- Creating the pitch video
What I learned
Building an AI-powered monitoring product is as much about product design and trust as it is about model quality. Users do not just need more findings, they need better-ranked findings, clear workflows, and a way to teach the system what is actually useful.
I also learned how important normalisation and source-specific handling are when working with live web data. Getting good results required respecting the strengths and quirks of each source rather than forcing them into a one-size-fits-all pipeline too early.
On the technical side, I learned a lot about designing asynchronous, webhook-driven workflows that stay robust under concurrency. I also saw how valuable Apify is when you want to move quickly from idea to production-style data collection across very different public surfaces.
What's next for DoppelSpotter
DoppelSpotter will continue to be refined into a robust, internal app that we'll use across our group of companies for brand monitoring.
My next step is to keep improving scan quality and precision, especially by refining prompt strategies, strengthening suppression of known false positives, and giving users even more control over how findings are prioritised.
The next major feature to implement is AI-driven takedown drafting: users can ask the app to draft a platform-specific takedown request that can be quickly copied and submitted to platforms hosting content that infringes on our trademarks.
Built With
- Apify
- Cursor
- Claude Sonnet 4.6, Claude Opus 4.6, GPT 5.4 (for development)
- DeepSeek via OpenRouter (for in-app analyses)
- Next.js
- React
- TypeScript
- Tailwind CSS
- Google Cloud Firestore
- Google Cloud Run
- Google Cloud Build
- MailerSend
- Cloudflare Workers
- CodePunch
Built With
- apify
- cursor
- deepseek
- google-cloud
- google-cloud-run
- google-firestore
- mailersend
- openai
- openrouter
Log in or sign up for Devpost to join the conversation.