02B2B SaaS
Immobilius
B2B real-estate intelligence
A SaaS that tells commercial real-estate teams which companies are about to need space. It watches funding rounds, headcount growth and executive hires, scores the signal, and drops the qualified lead on a map.
- Role
- Product & Full-stack
- Year
- 2025 — 2026
- Type
- B2B SaaS
- Status
- Live
Stack
- Next.js 16
- TypeScript
- PostgreSQL
- Supabase
- Leaflet
- Anthropic API
- Stripe
- Vercel
The problem
Commercial brokers find deals by hearing about them late. By the time a company publicly looks for space, five other brokers already know.
The bet: the intent is visible earlier. A funding round, a spike in job postings, a new COO — these leak months before a lease search. The product had to collect those signals continuously, decide which ones actually matter, and put them somewhere a broker can act on in ten seconds.
What I built
01
Signal engine
Ingestion routes pull company events on a schedule and normalise them into a single signal table in Postgres — funding rounds, headcount deltas, executive appointments, address changes.
Deduplication happens at write time, so one funding round reported by four sources becomes one signal rather than four leads.
02
Scoring
Each lead gets a score from the combination of its signals, weighted by recency and by how predictive that signal type has been. The model returns a short written reason alongside the number — a score with no explanation is a score nobody trusts.
03
The map
Leads render on a Leaflet map with marker clustering, so a dense downtown does not collapse into an unreadable pile of pins. Filters, the list view and the map stay in sync through a single URL-driven state.
Engineering decisions
Idempotent ingestion
Every ingestion job can be replayed safely. Re-running yesterday's fetch produces no duplicates.
Explainable scoring
Every score carries the signals that produced it. Users can audit the reasoning instead of trusting a black box.
Clustered geospatial rendering
Marker clustering plus viewport-bounded queries keep the map responsive with thousands of leads in play.
Cron-backed digests
A daily job emails each user only the leads that crossed their threshold since the last run — no dashboard-checking required.
Outcome
The largest thing I have built: roughly 880 source files spanning the ingestion pipeline, the scoring layer, the dashboard, the map and subscription billing.