Key decisions
Started as a focused internal tool to remove my own invoicing friction
Avoided full accounting scope because the problem was invoice control, not accounting complexity
Separated admin dashboard and client portal to support both business owner and client workflows
Kept business rules server-side for consistency and predictable invoice state
Used Stripe subscriptions to turn the product into a recurring-revenue SaaS
Prioritised long-term maintainability over shipping a bloated feature set