Inspiration
The problem statement hit differently: "This is not a contest. This is a public scoreboard."
Most marketing competitions ask you to write a strategy and present it to a panel. This one asked something harder — can your idea actually make real people on the real internet stop, react, and care?
That single line — "If it's good, people will stop" — became the foundation of everything I built.
I wanted to create a platform that doesn't just host ideas, but actively helps creators test, sharpen, and amplify them before putting them out into the world.
What It Does
ViralForge is a live public scoreboard for digital marketing ideas. Here's the full experience:
- Create — A 3-step guided campaign builder with live preview, color themes, platform targeting, and tag system
- AI Hook Analyzer — Paste your viral hook and get an instant AI score out of 100, stop-rate estimate, strengths, weaknesses, and a rewritten stronger version powered by Claude AI
- Post & Share — One-click share to Twitter, WhatsApp, LinkedIn, Instagram, and Reddit. Auto-generates a beautiful 1080×1080 visual share card ready to download
- Vote — Real-time voting with per-user deduplication and particle burst animations
- Leaderboard — Live podium + ranked table with Viral Velocity scores (votes per hour, not just total votes)
- Hot Right Now — Campaigns ranked by momentum in the last 60 minutes — a new idea can outrank an old one
- Campaign Battle Mode — Head-to-head voting between two campaigns. Which concept makes you stop?
- Scroll Stopper Simulator — A fake Instagram/TikTok feed that scrolls automatically. Your campaign card appears mid-feed and a Stop Rate % is calculated in real time
- AI Insights Panel — Pick any campaign and get: Campaign DNA Radar Chart (Emotion, Clarity, Shareability, Originality, Boldness), Viral Prediction Timeline (7-day growth curves), "Why It Works" AI analysis (marketing psychology breakdown by Claude), and an India Attention Heatmap with animated pulsing city dots
- Live Activity Ticker — A real-time scrolling feed at the bottom of every page showing live votes, shares, and campaign activity
How I Built It
Built entirely with vanilla HTML, CSS, and JavaScript — no frameworks, no build tools, no backend.
- Frontend: Pure HTML5, CSS3 with CSS custom properties, vanilla JS ES6+
- Animations: Custom particle system (HTML5 Canvas), IntersectionObserver scroll animations, requestAnimationFrame ticker
- Charts: Hand-drawn on HTML5 Canvas — Radar chart, Line chart, SVG India map
- AI: Claude API (
claude-sonnet-4) for Hook Strength Analysis and "Why It Works" campaign breakdowns - Share Cards: Generated on HTML5 Canvas at 1080×1080px and auto-downloaded
- Storage: localStorage for auth, votes, and user campaigns
Challenges I Faced
- Template literal escaping — Building large dynamic HTML strings in JS led to subtle
${}bugs that broke entire sections silently. Required a full audit of every rendered element. - Timing race conditions — The velocity list and activity feed were rendering before campaign data was ready. Fixed by wiring all initializations directly into
finishLoad()instead of delayed timeouts. - Canvas chart accuracy — Drawing the radar chart and timeline graph from scratch without a library required careful trigonometry and coordinate math.
- AI response parsing — Claude's responses needed consistent JSON parsing with graceful fallbacks for when the format drifted.
What I Learned
- The problem statement is the product spec. Every feature I built maps to a specific line: "make people stop" → Scroll Simulator. "Put it in front of people" → Share Card Generator. "Votes decide success" → Viral Velocity algorithm.
- Real-time feedback loops (AI hook analyzer, live preview, DNA radar) make creators better before they publish — not after.
- A scoreboard is only exciting if it feels alive. The ticker, velocity scores, and animated leaderboard make the difference between a list and a living platform.
Built With
- ai
- api
- canvas
- claude
- css3
- html5
- javascript
- netlify
Log in or sign up for Devpost to join the conversation.