Inspiration

We spend a lot of time on Twitter watching micro SaaS founders post their MRR milestones, revenue charts, and growth updates — and we noticed something: the signal is actually there, scattered across posts and replies, but there's no way to aggregate it into a coherent picture. When Omnara (YC S25) was making waves in the San Diego builder community, we wanted to track its trajectory — not just as users, but as builders who wanted to understand what a fast-moving AI-native startup actually looks like in motion. That curiosity became BullishForge.

What it does

BullishForge is a real-time micro SaaS intelligence dashboard. You point it at a company — starting with Omnara — and it surfaces a synthesized view of their growth: social velocity from Twitter/X, product signals, community engagement, and inferred traction metrics, all rendered in a visually rich, interactive interface. Think of it as a living pitch deck built from public data, updated continuously.

The dashboard features:

  • Social signal tracking — ingestion and analysis of Twitter/X posts from founders and company accounts
  • Traction visualization — time-series charts built with Recharts plotting engagement, mention volume, and estimated growth curves
  • 3D data scenes — Three.js / React Three Fiber visual layers for a distinctive, high-signal-density UI
  • Animated UI — Framer Motion transitions throughout for a polished, real-time feel

How we built it

The architecture is two-layer. On the backend, a Python scraper in the twitter-pulling/ module ingests Twitter/X data on a polling loop, containerized via Docker for consistent deployment. That data feeds into a Next.js 16 / React 19 API layer which aggregates, normalizes, and exposes it to the frontend.

The frontend is a Next.js App Router application using:

  • shadcn/ui (base-nova style) for a consistent, accessible component system
  • Tailwind v4 for utility styling
  • Recharts for time-series and metric charts
  • Three.js + @react-three/fiber + @react-three/drei for 3D visualization layers
  • Framer Motion for animated state transitions

The intelligence layer runs simple NLP and heuristics over the scraped content to derive signal scores — follower growth velocity, post frequency deltas, sentiment trend — and surfaces these as the core "BullishScore" metric for the tracked company.

$$ \text{BullishScore}(t) = \alpha \cdot \Delta_{\text{followers}}(t) + \beta \cdot \Delta_{\text{engagement}}(t) + \gamma \cdot \text{sentiment}(t) $$

where $\alpha$, $\beta$, $\gamma$ are empirically tuned weights.

Challenges we ran into

Twitter/X data access was the obvious first wall. The official API's free tier is painfully constrained for real-time scraping, so we had to build a careful rate-limited pulling strategy that maximized signal within those constraints — and still got blocked intermittently. Handling missing data gracefully in the UI without the charts looking dead took significant iteration.

Integration between the Python scraper and the Next.js layer was messier than expected. Getting Docker networking right so the scraper could write to a shared data store that the Next.js API could read without race conditions cost us a chunk of the hackathon window.

Making Three.js useful rather than decorative was a design challenge. It's easy to slap a 3D element into a dashboard and have it feel like a gimmick. We spent time making sure the 3D layer was encoding actual data, not just vibes.

Accomplishments that we're proud of

  • A fully functional end-to-end data pipeline: Twitter → Python ingestion → Docker → Next.js API → live dashboard — shipped in a hackathon window
  • The BullishScore model actually produces intuitive results when you compare it against what you already know about Omnara's trajectory

What we learned

  • Rate limits are a product constraint, not just an engineering one — you have to design your data model around what you can reliably get, not what you wish you had
  • Next.js 16 and React 19 have real breaking changes from 14/15. The App Router patterns, server component behavior, and some shadcn component APIs behaved differently than expected from training data — we had to read actual docs rather than lean on muscle memory
  • Three.js in a data dashboard is a legitimate choice if you're disciplined about making geometry encode information
  • Shipping beats perfecting. We cut the sentiment model from a fine-tuned classifier to a lexicon-based scorer mid-hackathon and it was the right call

What's next for BullishForge - Track Omnara

The obvious expansion is multi-company tracking — right now BullishForge is pointed at Omnara, but the architecture is company-agnostic. The next version lets users input any micro SaaS founder handle and gets a BullishScore dashboard spun up for them in under a minute.

Longer term: integrating additional data sources (Product Hunt launches, Hacker News mentions, GitHub star velocity) to build a more robust, multi-signal traction index. The goal is to make BullishForge the Bloomberg Terminal for micro SaaS — public signal, beautifully synthesized.

Built With

Share this project:

Updates