Client Build · Architecture

Custom project management system built for the architecture deal lifecycle.

A mid-size architecture firm was managing proposals, projects, invoicing, and documents across spreadsheets and email. Revenue was leaking through the cracks.

How the firm was running before we built this

Proposals lived in email. Projects lived in spreadsheets. Invoices were built manually, sent late, and sometimes never sent at all. Billable milestones slipped by unnoticed. Required documents went missing at close.

Spreadsheets + email

How the pipeline was managed

No single source of truth. Project status lived in someone's inbox. Milestones were tracked in a shared sheet that stayed current only when someone remembered to update it.

Unbilled milestones

Revenue sitting uncollected

Milestone completion and invoice generation were two separate manual steps — often separated by days or weeks. Some milestones were completed and never invoiced. The firm had no way to know what it was owed until someone dug through the spreadsheet.

Missing docs

Required files missing at project close

Closeout required a standard set of deliverables: permits, final drawings, sign-off letters. There was no enforced checklist. Files were scattered across email threads and local drives. At close, someone had to hunt.

A purpose-built system for the full project lifecycle

We built a single application that covers every stage — from proposal to closeout. Six interconnected modules, all pulling from the same data. Nothing lives in email or spreadsheets anymore.

📊 Action-first dashboard

Dashboard

Real-time action items sorted by urgency: upfront invoices not yet sent, overdue invoices (dollar amount and days past due), unbilled milestones ready to bill, missing required documents, and open checklist items. The firm's highest-priority work is visible the moment they log in — no digging required.

Stack: Next.js server components, Prisma queries, real-time aggregation across projects.

🏗️ Full lifecycle tracking

Project Lifecycle

Each project record holds: client contact info, ordered project stages, milestones with billing status, expenses with markup applied, a complete invoice history, and an enforced document checklist. Every piece of data that matters to a project lives in one place and is always current.

Stack: Prisma + PostgreSQL relational model, TypeScript API routes, Tailwind UI.

🗂️ Visual pipeline

Kanban Board

A drag-and-drop visual board showing every active project by stage — from Proposal through Schematic Design, Design Development, Construction Documents, Permitting, Construction Administration, and Closeout. Moving a card updates the project record instantly. The whole pipeline is readable at a glance.

Stack: React DnD, optimistic UI updates, stage-gated transitions with validation.

📅 Cross-project visibility

Calendar

A unified calendar that surfaces milestone due dates and project deadlines across all active projects in one view. Filter by project or stage. Upcoming obligations are visible weeks ahead — no more missed billing windows because a milestone date lived in a spreadsheet nobody checked.

Stack: FullCalendar integration, Prisma milestone queries, per-project color coding.

📄 Auto-populated line items

Proposals & Invoicing

Generate proposals and invoices directly from the system. Line items pull automatically from tracked milestones and marked-up expenses — no manual reentry. Proposals convert to projects in one click. Invoices are dated, numbered, and logged against the project record the moment they're issued.

Stack: Server-side PDF generation, milestone-to-line-item mapping, invoice state machine (Draft → Sent → Paid → Overdue).

🔗 Per-project client view

Client Portal

Each project gets a secure, shareable client-facing view showing: current project status and active stage, available documents (permits, drawings, deliverables), and invoice history with payment status. Clients have the visibility they need without email back-and-forth. The firm controls what's shown.

Stack: Token-authenticated public routes, scoped Prisma queries, read-only document access.

Full stack
Next.js TypeScript Prisma PostgreSQL Tailwind CSS

What changed after launch

Three outcomes the firm cared about most. Every one of them was a direct consequence of the system enforcing what the spreadsheets couldn't.

$0

Revenue leakage

Every billable milestone is flagged automatically on the dashboard the moment it's marked complete. Nothing falls through without a prompt to invoice.

1 screen

Full pipeline view

Replaced the combination of spreadsheets, email threads, and memory. Every project, stage, milestone, and outstanding item visible in one place.

0

Missed at close

The required document checklist is enforced per project. Closeout cannot proceed while required files are outstanding. The hunt is gone.

Client Build · Architecture

Running your projects on
spreadsheets and email? Let's fix that.

We scope, build, and hand off custom software for service businesses. Fixed price, you own the code, no retainer after delivery. Book a free 30-minute audit call and we'll tell you exactly what we'd build for your workflow.

Book a Free Audit Call