Finding risk was only the first step. Teams still had to close it.
MindFort is an AI security assessment platform for web apps, APIs, code, and infrastructure.
Its agents could run for hours and produce a large, changing body of security evidence. The central product challenge was not displaying more output but was preserving enough context and state for a human to trust the evidence and move the vulnerability toward a verified fix.
The dashboard exposed the work. The finding had to contain it.
Organization health helped teams decide where to look, but the real work began after they opened a finding.

One finding, four stages of work
I organized the experience around the operator’s path from uncertain agent output to a verified resolution.
Validate the signal
Turn raw agent output into a finding with severity, exploitability, target context, and reproducible evidence.
Review the evidence
Keep impact, proof of concept, technical detail, and remediation guidance together in one stable workspace.
Choose the next action
Assign ownership, accept risk, create an issue, or start a patch without losing the context behind the decision.
Fix and verify
Carry the same finding through remediation and retesting until the system can show that the vulnerability is resolved.
Make the finding answer the next question
The finding became the operational unit: evidence in the center, decision context at the edge, and the next action close at hand.


Evidence stays attached to the decision
Description, impact, proof of concept, technical detail, and remediation share one stable context instead of splitting across tools.

The next action remains visible
Status, ownership, target context, retest, and patch actions stay available while an operator reviews the proof.
Make the finding contract durable
The interface could only stay coherent if finding identity, evidence, ownership, patching, and retest state survived every boundary beneath it.
Finding workspace
One place to understand and act
The React interface kept evidence central while status, ownership, target context, patching, and retesting remained within reach.Application contract
One identity across every action
Typed API services and shared schemas preserved the finding’s identity across the browser, database, integrations, and agent workflows.Durable execution
Asynchronous work returns to the finding
FastAPI, PostgreSQL, Temporal, streaming updates, and isolated sandboxes made patches and retests observable, recoverable, and safe to revisit later.Three decisions that made findings operable
Each decision connected a human need in the workspace to a technical contract that had to hold across the system.
Preserve evidence with the decision
- Constraint
- Agent output could be technically correct while still being difficult for an operator to verify or explain.
- My decision
- I kept impact, proof of concept, technical evidence, and remediation attached to one stable finding context.
- What changed
- Operators could evaluate the proof without reconstructing the agent’s work across separate tools.
Keep the next action explicit
- Constraint
- A detailed finding was still a dead end if ownership, patching, issue creation, and retesting lived elsewhere.
- My decision
- I placed operational context and actions beside the evidence while preserving the operator’s position in the review workflow.
- What changed
- Understanding the vulnerability connected directly to the work required to close it.
Model uncertainty as product state
- Constraint
- Patches, retests, and validation could run for hours, fail partway through, or outlive a browser session.
- My decision
- I treated queued, running, failed, stale, and completed work as durable states shared across the interface and backend.
- What changed
- Operators could leave and return without losing evidence, ownership, status, or the available recovery path.
What I carried forward
Agent products earn trust through legibility and reliability. The model may be non-deterministic, but the evidence, state, permissions, and recovery paths around its work cannot be. A finding became useful only when a person could understand why it mattered, choose what to do next, and return later to verify the result.