Early-stage CRM/marketing SaaS. I work across the backend pieces that make the product behave reliably: queues, APIs, read models, AI signals, telephony credits, permissions, and imports.
Apr 2025-present / Remote / primary backend engineer across large parts of the system
owned / queues, read models, AI signals, telephony credits, RBAC, imports
Made lead listing ~8x faster in production read The lead page looked simple, but every filter hit a join-heavy query and the DB pool started struggling under modest load.
Moved the read path from 4-table joins to a materialized table updated by post-commit events.
Scheduled campaigns without a fragile cron loop read Scheduled notifications and email campaigns needed delayed delivery without depending on one global scheduler.
Replaced a naive scheduler with RabbitMQ TTL + DLX delay queues.
AI lead scoring from calls, emails, and notes read Sales signals were scattered across transcripts, emails, notes, and CRM fields.
Built a queued signal pipeline that combines LLM tags with deterministic scoring.
Activity timelines without slowing requests read The CRM needed audit trails for calls, emails, updates, and lead changes without making product actions feel slower.
Moved activity logging behind domain events so request paths did not wait on timeline writes.
Unified CRM filters and pipeline stages read Filtering and pipeline behavior had started spreading across CRM views as duplicated logic and hard-coded statuses.
Centralized filter definitions and moved lead/opportunity stages into a DB-backed pipeline model.
+3 more