Overview
The product was shaped for teams that need a clearer way to understand which public security advisories matter to their own software inventory. The engineering challenge was not only ingesting vulnerability data, but making the output usable: fewer irrelevant findings, clear ownership, status tracking, and enough audit history for day-to-day security operations.
Problem
Security teams often receive broad CVE data that is disconnected from the exact products, versions, vendors, and operating context they manage. Without better matching and workflow, teams spend time filtering noise instead of acting on the findings that matter.
Product Context
The platform needed tenant-scoped product inventory, advisory ingestion, vulnerability matching, deduplicated findings, assignment flows, status changes, notes, alerts, and audit logs. It also needed administrative controls so different users could work inside the right tenant and role boundary.
Architecture Pressure
The system had to separate ingestion work from user-facing workflows, protect tenant boundaries, and keep findings explainable. Background processing, durable storage, and clear data models were more important than a surface-level dashboard.
Engineering Decisions
Used a backend-first architecture with FastAPI, PostgreSQL, and Celery so ingestion, matching, and workflow work could scale independently.
Prioritized tenant isolation, RBAC, and audit logging because security products need trust at the data-access layer before the interface can be trusted.
Built around CPE-first matching with keyword and version scoring to reduce irrelevant advisory noise.
Kept findings deduplicated and workflow-oriented so teams can assign, track, comment, alert, and revisit decisions.