All work

SaaS — Project Billing

Pertally

Bill by the unit, not just the hour.

Pertally

The problem

Construction, inspection, and surveying firms bill in three modes at once — hourly labor, per-unit deliverables (lots inspected, sticks set, footage walked), and fixed-fee phases. Generic invoicing tools assume one mode per invoice, so teams track unit counts in spreadsheets and rebuild the invoice by hand at month-end. Internal cost rates leak into client-facing views, or stay out of the system entirely.

The solution

A purpose-built billing engine where per-unit is a first-class line type alongside hourly and fixed-fee. Project managers compose mixed invoices in one place, field staff log units and hours, and a separate internal layer holds cost rates, payroll, and margin reports — so the firm sees profit per phase without ever exposing it on the client invoice or the client portal.

Highlights

  • Mixed per-unit / hourly / fixed-fee line items on a single invoice
  • Separate internal vs client views — cost, profit, and internal hours never reach the client portal
  • Hashed-token client portal — no enumeration, scoped to issued invoices only
  • Per-tenant isolation enforced at the Postgres row-level, plus per-account rate limits on auth and AI endpoints
  • AI-assisted drafting (Anthropic Claude) with server-only keys and account-scoped prompts
  • Payroll consumes only approved time entries and stamps each one with the run ID — re-runs and overlaps can't double-pay
  • TOTP-based two-factor auth with per-account lockout, bcrypt-hashed recovery codes, and replay protection

Stack

Next.jsReact NativeFastAPIPostgreSQLAWS

Integrations

ClaudeStripeResend

Need something like this?

I'm taking on a small number of new projects each quarter. Let's talk about what you're building.

Start the conversation