All projects

CRM and operations hub

A Vue 3 + webedge-db CRM — leads from every source, then triage, assign and follow up in one pipeline.

Vue 3webedge-dbIntegrations
WebEdge CRM screenshotDev-story
01

Challenge

Leads arrive from very different places — partner APIs, email alerts, RSS/sitemaps, scraped listings, spreadsheets — and end up scattered instead of in one pipeline.

02

What we did

A webedge-db CRM that ingests leads through eight source types (official API, email-alert parser, RSS/Atom/sitemap, HTML fetch, a Playwright browser profile, webhooks, CSV/Excel/Sheets import, a browser extension), with a source catalogue, saved search profiles, a lead inbox and per-source health. It grew out of a real-estate listing radar into a general acquisition tool.

03

Result

New lead sources are added as configured connectors; everything lands in one real-time inbox with per-source health, then a drag-and-drop pipeline with lead-triage scoring, duplicate merge, bulk CSV actions and automated follow-up reminders moves each lead forward.

Dev-story article

CRM and operations hub: how the project was built

It began as a single-portal listings monitor: a browser worker that fought through a bot challenge, scraped one Lithuanian real-estate site, and emailed new results. The problem was that every new lead source meant another one-off script and another inbox. So the project turned inward and became a real CRM: one place where leads from many source types land, get scored, and get worked, with the screen updating live instead of on redeploy.

Sections

05

Modules

05

Stack

Vue 3 + webedge-db

01

Why the project exists

Leads arrive from very different places — partner APIs, email alerts, RSS/sitemaps, scraped listings, spreadsheets — and end up scattered instead of in one pipeline.

It began as a single-portal listings monitor: a browser worker that fought through a bot challenge, scraped one Lithuanian real-estate site, and emailed new results. The problem was that every new lead source meant another one-off script and another inbox. So the project turned inward and became a real CRM: one place where leads from many source types land, get scored, and get worked, with the screen updating live instead of on redeploy.

02

What was built

A webedge-db CRM that ingests leads through eight source types (official API, email-alert parser, RSS/Atom/sitemap, HTML fetch, a Playwright browser profile, webhooks, CSV/Excel/Sheets import, a browser extension), with a source catalogue, saved search profiles, a lead inbox and per-source health. It grew out of a real-estate listing radar into a general acquisition tool.

A Vue 3 + Tailwind workspace over a reactive backend, where a source catalog models twelve acquisition modes: partner APIs, email-alert parsers, RSS/sitemap feeds, public-HTML crawlers, a Playwright browser profile with saved cookies, webhooks, CSV/Sheets imports, and Telegram/Messenger groups among them. Raw events flow in through secret-guarded HTTP ingest endpoints, become deduplicated leads, and surface on a drag-drop pipeline board. A generic worker queue runs pluggable HTML, RSS, and API connectors, so adding a source is a search profile, not a new codebase.

03

Main modules and user path

M01

Source catalog + ingest: twelve modeled acquisition modes feeding two HTTP endpoints (inbound-email, generic ingest) guarded by a shared ingest secret, plus a worker queue running pluggable public-HTML, RSS/Atom, and JSON-API connectors

M02

Drag-drop pipeline board with custom stages, workload stats, a contacts drawer, bulk actions, and CSV import/export

M03

Smart lead triage scoring alongside exact- and cross-source fingerprint dedup with a duplicate-lead merge flow and normalized phone/email writes

M04

Follow-up engine: owner assignment, activity logging, and email reminders deliberately capped to recently-due tasks so the mailbox stays signal

M05

Automation Studio: a recipe builder (triggers lead_created/email_received/manual, source and price filters, actions like set-priority, assign-owner, create-task, enqueue-job) that logs each run's results, duration, and errors

04

Architecture and technology decisions

Built with Vue 3, webedge-db, Integrations.

Vue 3 + Tailwind SPA subscribing to a reactive backend whose TypeScript mutations and queries handle dedup, price history, and upserts; login runs on Better Auth OTP gated by backend context, and free-text posts from chat sources are parsed by a Claude extractor.

05

Result and lessons

New lead sources are added as configured connectors; everything lands in one real-time inbox with per-source health, then a drag-and-drop pipeline with lead-triage scoring, duplicate merge, bulk CSV actions and automated follow-up reminders moves each lead forward.

What was a one-portal email radar is now a working multi-source acquisition workspace where a new lead source is a saved search profile rather than a new script — honestly still one team's operational tool, but a genuine CRM rather than a scraper with a mailing list.

Read next

These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.

Have a similar idea?

Discuss your project