SaaS · React Flow · FastAPI · Visual PM
Visual project management + dynamic contract generation SaaS. Contractors define their work visually — milestone nodes on a canvas wire into a structured project graph. The system drafts contracts from that graph and automates client progress updates as milestones complete.
Contractors lose scope clarity and billing disputes arise because milestones live in email threads — no shared, auditable system. Clients don't know what's done. Contractors can't enforce milestone-based billing because there's no signed source of truth. Project scope drifts because there's no visual definition.
The solution is a canvas where contractors draw a project — create milestone nodes, connect dependencies, assign values — and the system generates a contract from that visual definition. As milestones are marked complete, the client gets an automated summary email. No manual paperwork. No dispute over what was agreed.
React Flow canvas for node-based milestone creation. Nodes include milestone name, description, deliverables, value, and dependency edges. State synced to FastAPI backend on each canvas save.
REST API managing projects, milestones, and clients. Triggers PDF generation on contract finalization. Handles milestone completion webhooks to kick outreach pipeline. SQLModel ORM over PostgreSQL.
ReportLab-based PDF generation from project graph data. Contract templates structured around milestone nodes. SendGrid integration sends milestone completion emails to clients with PDF progress attachment.
Drag-and-drop node graph over form-based input. Forces contractors to define structure, not just list tasks. Dependency edges become deliverable gates.
Contract content is derived from the node structure, not a static template. Any canvas change invalidates the current draft — contract always reflects latest scope agreement.
Pydantic v2 models serve as both API schema and ORM models — single source of truth for milestone shape. Eliminates mapper boilerplate and schema drift.
Programmatic PDF generation avoids headless browser overhead. ReportLab gives pixel-level layout control for contract formatting without a Chromium dependency.
Transactional email on milestone completion — not a notification system, but a structured audit trail. Every client email includes milestone ID, timestamp, and attached PDF.
Lightweight API surface — no admin, no ORM batteries needed beyond SQLModel. Async handlers for document generation pipeline. Pydantic v2 validation is zero-overhead at I/O boundaries.