SecSuite
Security consultant platform — 10 modules
Built by Rogue AI · One platform for the whole consultant lifecycle · Self-hosted
Built solo as a portfolio project, iterated module by module.
The problem
An independent security consultant runs the same workflow on every engagement — scope the work, track findings, manage evidence, write the report, raise the invoice — but the tooling is scattered across spreadsheets, note files, and disconnected SaaS subscriptions. Each tool owns a slice of the data, nothing shares a client record, and the same finding gets retyped three times before it reaches a deliverable. SecSuite is one platform that holds the entire lifecycle behind a single login, so a client, an engagement, its findings, the evidence, and the resulting report and invoice all reference the same rows.
What I built
A single Next.js 16 / React 19 application backed by one PostgreSQL database. The schema is large — 47 Prisma models — because the consultant lifecycle genuinely has that many entities: clients, engagements, findings, evidence, recon targets, phishing campaigns, compliance assessments, proposals, invoices, time entries. Ten modules sit on top of that schema, each owning a slice of the workflow but reading and writing the same shared records. Auth is a custom HS256 JWT (jose) in an httpOnly cookie rather than NextAuth, which keeps the session model small and explicit and avoids pulling a framework's opinions into a single-operator tool.
Architecture
Tech stack
What broke first
- ▸
A wide schema is honest, not bloat — the consultant lifecycle really has dozens of distinct entities, and forcing them through one shared data model is what removes the retyping that scattered tools cause.
- ▸
Custom JWT was the right call for a single-operator tool: a small, explicit session model is easier to reason about and harden than wiring a full auth framework I'd only use one path of.
- ▸
Per-client RAG namespacing matters more than retrieval quality at this scale — keeping one client's context from bleeding into another's is the part you cannot get wrong.
Outcome
The result is one application where a client record, its engagements, findings, evidence, reports, and invoices share the same rows, with per-client RAG grounding any AI assistance in that client's own material — running entirely on self-hosted infrastructure with local-first LLM inference.
Honest limits
This is a self-hosted, single-operator tool built solo as a portfolio project, not a multi-tenant SaaS. It runs in a local Docker lab; the old VPS it once targeted has been retired. There is no team behind it, no hosted offering, and no uptime claim — it demonstrates how the full consultant lifecycle can live behind one schema and one login, and the AI features are only as good as the local model and the documents fed into them.
