⚠ This browser session can't save data (private window or preview). The app works, but export a backup from Settings & data before closing.

Overview

● local

Overview

Where the Trust stands today — click any tile for the breakdown, any calendar day for a cash projection.

Raymond Brown where things stand between Raymond and the Trust

ItemTypeDueRaymond owes SFTExpected to SFTRaymond's share

Recent jobs created or paid in the last 30 days

JobDate$ put inSplitProfitPayout

Loans recent activity, due soon or overdue

BorrowerDuePrincipalTotal due

Vendor bills due in the next 30 days or overdue

VendorJobDueBalanceRaymond owes

Jobs

Every job with its cost, profit and how it's split between the Trust and Raymond.Every job, where it stands, and the work on it.

Analytics paid-out jobs

SFT profitRaymond profitExpected (still active)margin % at the end of each bar
JobDateContractCostsJob profit$ put inSplitProfitPayoutStatusActions

Loans

Short-term loans from the Trust — flat interest, due dates, and payments.

Analytics paid-back loans

Interest earnedExpected (still out)rate · days at the end of each bar
BorrowerStartTermDuePrincipalRateInterestTotal dueBalanceStatusActions

Customers

Who the jobs were for — contact details and job history. Pick a customer on each job to build this up.

CustomerContactJobsLast jobContractsJob profitSFT share

Cash — SFT Bank

Cash accounts in the safe, transfers, and the ledger every loan, job and vendor bill posts to.

Transfer between accounts

Move cash from one envelope to another — e.g. into Payroll after a job pays out.

Add or take out cash

Cash by hand — a starting balance, paying someone from an envelope, anything that isn't a loan, job, or vendor bill.

Ledger

DateAccountDescriptionAmountBalance after

Vendors & credit lines

Vendor accounts materials get charged to, the bills on them, and what Raymond owes back in cash.

Bills

VendorBill dateInvoiceJobDueAmountPaidBalanceRaymond owesStatusActions

A bill charged on a credit line for a job shows up as cash Raymond owes SFT. Reimburse records his cash coming in (deposits to SFT Bank). Pay records SFT paying the vendor (comes out of SFT Bank). Both can be partial.

Reports

Money out, profit collected, and how it splits between the partners.

SFT money out right now

Profit collected

Job profitLoan interest

Monthly breakdown

MonthJob profitLoan interestTotal profitPrincipal returned

Partner split Schwartz Family Trust vs Raymond Brown — collected profit

Schwartz Family TrustRaymond Brown

By month selected year

MonthSFT — jobsSFT — interestSFT totalRaymond

By year all time

YearSFT — jobsSFT — interestSFT totalRaymondSFT share

Profit per job paid jobs

JobPaidSFT $ inSFT profitRaymond profitSFT return on $

Interest per loan paid loans

BorrowerPaidPrincipalInterest earnedReturn on $Annualized

Documents

Every printable form and statement in one place. Each opens a print-ready page — use “Save as PDF” in the print dialog to keep a copy.

🤝
Partner statement

Everything settled between Raymond and the Trust over a date range, plus what's still open. Signature lines included.

🛠
Job investment & profit-split form

One-page form for a job: costs, each partner's $ in, split, payout, and materials on vendor credit.

📝
Loan agreement

Promissory note for a loan — principal, flat interest, due date, terms and signature lines.

🏪
Vendor statement reconciliation

Tick off the charges on a vendor's monthly statement and catch anything missing.

📐
Proposal / estimate

Customer-facing proposal with priced line items, terms and an acceptance signature.

🧾
Invoice

Print or re-print a customer invoice with balance due.

📊
Financial statements

Income statement, balance sheet, cash flow and JV job P&L for a period.

📋
Open items summary

Active loans, active jobs, open vendor bills and cash on hand as of today — a one-page snapshot.

📊
Spreadsheets

CSV exports that open straight in Excel.

My account

The things that are yours — your sign-in, your devices, your look-and-feel. They follow you into every company you belong to.

Profile

Appearance

Yours alone — the same in every company you open.

Password

One login, one password: it changes in every company you're in. Other devices are signed out.

Passkeys

A passkey signs you in with your fingerprint, face or a security key — one passkey for every company you belong to. They live on the platform's sign-in page.

Active sessions where this login is signed in · times in UTC

Device / browserIP addressSigned inLast active

✨ What's new

Every update, newest first — what changed and where to find it.

Backup & data

Backups, spreadsheet exports, version history and starting over. Owner settings live under Admin.

Backup & restore

Export a backup file now and then — importing it restores everything. A backup restores into any company running this app.

Export spreadsheets

CSV files open straight in Excel.

Owner settings

Branding, email, users, company details, operating settings, templates, automations, forms and the price list are all under Admin.

Start over

Deletes every loan, job, bill and ledger entry. Export a backup first.

Estimates & contracts

Itemized estimates per job, the contract they became, approved change orders, and budget vs. actual.

JobCustomerEstimateEst. costEst. priceContractChange ordersActual costsBudget usedActions

Subcontractors

Who you bring in and what they offer, what they've been paid per job and per year (1099 tracking), their paperwork and their crew logins.

SubcontractorTrade & servicesContactJobsPaid this yearPaid all-timePaperworkCrew app

Receivables

Customer invoices per job — what's been billed, collected, and what's overdue.

Aging open balances by how long past due

CustomerCurrent1–3031–6061–9090+Total
InvoiceCustomerJobDateDueAmountPaidBalanceStatusActions

Customers pay the company, not the Trust — so invoice payments don't touch SFT Bank unless you tick “deposited to SFT Bank” when recording one. The Trust's own money from a job still arrives as the job payout.

Cards

What you owe on each card, and how much you've put on each one. Every charge links to the job or loan it funded.

By card bar = charged in the selected year

CardCharged (year)Charged all-timeStill owedPaid back

Every card charge

CardOnDateAmountStill owed

Payables

Everything the Trust owes: vendor credit-line bills, money borrowed on cards/apps to fund jobs, and unpaid subcontractor entries.

Aging by due date

PayeeTypeJobDueBalanceActions

Financial statements

Income statement, balance sheet and cash flow for the Trust, plus the joint-venture job P&L. Pick a period and print.

Income statement

Balance sheet

Cash flow statement SFT Bank & envelopes

Joint-venture job P&L jobs paid out in the period

Schedule

Where every active job is on the calendar — start, finish, milestones, and where crews overlap.

Milestones coming up next 60 days

DateJobMilestone

Purchase orders

Commit to a purchase before the bill arrives, then match the bill against it. Committed + spent vs. budget is what catches overruns early.

PO #JobVendor / subDateAmountStatusActions

Time

Hours per worker per job. Every entry becomes labor cost on the job at the worker's rate (plus burden, if set).

Week

Entries this week

DateWorkerJobHoursCost

Workers

NameRateHours YTDPaid YTD

Overhead

The company's costs that aren't tied to a job — insurance, truck, phone, software, tools. This is what turns job margin into true break-even.

Recurring costs the budget lines — "Log payment" records the actual spend when it happens and tracks when the next one is due

ItemCategoryEveryAmountPer monthPaid

Expenses logged one-off spends and logged recurring payments; "Owed to SFT" tracks what the company still has to reimburse

DateItemCategoryPaid viaAmountOwed to SFT

Bank reconciliation

Import a bank or card statement (CSV) and tick it off against the ledger. Whatever's left unmatched is a missed entry or a bank error.

Statement lines

DateDescriptionAmountMatch

Ledger entries not yet reconciled

DateDescriptionAmount

Tax & year-end

Sales tax settings, mileage log, 1099 summary and a one-click year-end package for the accountant.

Mileage log

DateJob / purposeRouteMilesDeduction

1099 summary subcontractors paid $600+

SubcontractorW-9PaidStatus

Sales tax collected

QuarterTaxable salesTax billedTax collected

Boards

Drag a job to move it along its pipeline. Cards show the customer, the contract and how long the job has sat in its stage.

Tasks & appointments

To-dos with owners and due dates, and appointments on the calendar — per job, per customer, or on their own.

WhenWhatJob / customerWho

Admin

Company settings — each item opens as a page here. Backups & version history live under Backup & data; your own password, passkeys and sessions are under My account.

Business

Jobs & records

Pick-lists

People & access

Templates & automation

Money

Connections

Security & activity

Data

Sales reports

Leads, close rates, estimating conversion and the open pipeline — by month, lead source, sales rep or job type.

Leads & close rates a lead is a job created that year; it counts as sold the first time it reaches Sold or later

By month

MonthLeadsSoldLostClose rateSold value

By

Lead sourceLeadsSoldLostClose rateSold valueAvg sale

Estimating conversion estimates by their estimate date — accepted or signed counts as won

MonthEstimatesSentAcceptedDeclinedConversionEstimatedAccepted value

Sales pipeline open jobs right now, by stage

StageJobsValueDays

Outstanding estimates draft or sent, not yet decided — by age

AgeEstimatesValueJobs

Forecast & analytics

Project your profit from the pace you're actually running — then dig into the numbers behind it. Export anything to Excel, PDF or CSV.

🔮 Profit forecast start from your real pace, then adjust anything

MonthJobsJob profitLoan interestTotalCumulative

This projection assumes your recent pace continues. It's a planning tool, not a promise — it doesn't model collection risk (jobs that pay late or not at all), the cash you have on hand to fund new work, or seasonality. Change the inputs above to test scenarios, or pick Conservative / Optimistic.

Analytics where the money is right now

Profit collected by month

SFT job profitLoan interestmargin % line

Profit by trade booked, all jobs

Pipeline by stage expected SFT profit on active jobs

Top jobs by SFT profit

Collected by year

YearJobs paidJob profitLoan interestSFT totalRaymond

Tools

Industry-standard calculators. Enter your measurements — results update as you type; nothing is saved. Turn calculators on or off under Admin ▸ Tools & calculators.

Bids

Send a job out for bid: the subs you pick get only what you share (scope, measurements, notes, photos), bid on it, and the one you award accepts it online — then they're on the job.

Bid requestJobDueInvitedBidsLow bidStatusAwarded to

New bid request

Only what you put here reaches the subs — never the customer, the contract price or anything else on the job.

The request

Photos & documents to include

From the job's files — tick the ones the bidders should see.

Pick a job first.

Who to invite

Each invited sub gets their own link by email. Subs without an email still get a link you can copy afterwards.

move openesc close⌘K or / from anywhere

New contact

👤 Contact
🧩 Fields
📍 Address
⚙ Other info

Estimate

TypeDescriptionQtyUnit costMarkup %CostPrice

Customer proposal

Customers never see labor, materials, unit costs, markup or profit — only what you put on this page.

Sections turn each on or off, and edit its text
Line items the customer sees
SectionDescriptionQtyUnitAmount
Packages Good / Better / Best — the customer picks one and it becomes the price
NameWhat's includedPrice
Signing & upgrades what happens when the customer signs
Optional upgrades the customer can tick these when signing — added to the total only if chosen
DescriptionQtyUnitAmount
Customer selections up to 3 things the customer fills in when signing

Change orders

#DateDescriptionAmountStatus

Add a change order

Job costs

DateTypeDescriptionPaid toPaid viaAmount

Add a cost

New subcontractor

New invoice

DescriptionAmount

Record payment

Company details shown on estimates & invoices

Schedule

Milestones

Purchase order

DescriptionQtyUnit costTotal

Worker

Log time

Tip: log the whole crew at once — pick a worker, save, and the dialog stays open for the next one.

Recurring cost

Expense

Log a trip

Progress billing

DrawStage%AmountInvoice

Job documents

Lien waivers

PartyTypeStageDateThrough amountReceived

Operating settings

New task

to

Email

Attachments — from the job and the company library

Email templates

Use Insert field… to drop in customer, job, money and company details — they're filled in when the email is written. **bold**, *italic*, lines starting with - become bullets, # a heading. Emails are sent from .

Automations

When something happens on a job, do something automatically. Rules run in this browser when the trigger happens here; overdue-invoice rules run once a day when the ERP is opened.

OnWhenThen

New rule

Then
Automatic emails go out only when the customer has an email address; otherwise a task “Email customer — …” is created instead.

Customer link

Open ↗

Subcontractors on this job

Assigned subs see this job in the crew app (sub.html): site, contact, their scope, work orders, tasks, photos and forms — never any prices or costs.

SubcontractorScope for themDatesStatus
Add an assignment
The job, where it is, their scope and dates, and a link to the crew app — with a link to create their crew login if they don't have one yet.

Assign to a job

Pick the job — the next screen takes their scope and dates and can email them.

Crew-app invite

Crew login

They sign in at and only see jobs assigned to them.

Forms & checklists

Inspections, completion checklists, safety checks — filled in per job by the office or the crew app. Eight question types including photos; a question can write its answer straight into a job field.

FormQuestionsWhoFilled in

New form

Questions

Map a question to a job field and the answer lands on the job when the form is saved. A question mapped to a dropdown field uses that field's options, so the two never drift apart.

Form

Forms on this job

Photos

Photos on the job. Captions show on the customer's job page; untick “customer” to keep a photo internal.

Price list

Items you estimate with often. Pick them from “+ From price list” in the estimate dialog.

ItemTypeUnitUnit costMarkup %Price

Add from price list

Estimate templates

Save the current estimate's lines as a template, or start this estimate from one (lines are added to what's there).

Branding the app's own name — sidebar, tab & footer

Internal only — the name customers see on documents is set under Company details.

Email every email the app sends — where it comes from, who gets a copy, and which ones go out at all

Sending

The From domain should be hosted here or list this server in its SPF record, or messages may be marked as spam. Individual emails below can use a From and Reply-to of their own — say invoices from billing@ with replies to accounting@.

What gets emailed switch any email off and nothing sends it — not a button, not an automation. Leave From, Reply-to and Copy blank to use the settings above.

EmailGoes toSendFromReply-toCopy to

App & links install the ERP and share the public addresses

API keys & settings stored on the server — secret keys are never shown in full

Loading…

Job fields

Your own fields on every job or contact — pick the type, group them into categories, mark the must-haves. They show in the job and contact forms, on the detail views, and crew forms can write straight into them.

FieldTypeIn use

New field

Workflows & statuses

A workflow is the list of statuses a job moves through. Each status sits in a stage — that's what the stage board, automations and reports use — so you can name statuses however you work without breaking anything.

WorkflowStatusesJobs

Edit workflow

StatusStage
Order matters — it's the order on the board. A status can't be removed while jobs sit on it.

Lists

ValueIn use
Renaming a value updates every job and contact that uses it. A value in use can't be removed (tags are the exception — removing one takes it off every record).

Document templates

Contracts, agreements and certificates written once and created per job with the customer's and job's details filled in. Use Insert field… for merge fields; # headings, - bullets and **bold** work like in emails. Have your attorney look over anything you'll rely on legally.

📁 Company library

Documents that belong to the business rather than one job — license, insurance certificate, W-9, warranty terms, price sheets, sub agreements. Tick Customers to list a file at the bottom of every proposal, invoice and job page you send; pick any of them as an attachment when you write an email.

DocumentCategoryCustomersSizeAdded
PDFs up to 8 MB; photos are shrunk to fit.

Commission plans

One plan per person. Every job that names them as Sales rep earns commission by this rule; a job can override it from its page. Payments are job-costed the way contractors do it: a Sales commission cost entry on the job (cost type Other), so job profit — and the SFT / Raymond split — are after commission. A plan based on profit uses the job's profit before commission.

PersonBasisRateFlat $ per jobEarned

Commission

Pay commission

Logged as a job cost (Other · "Sales commission — …") and on the job's log. If the job still has typed cost totals, they're carried in as opening entries first.

Work-order workflows

A step list per trade. A work order (a PO issued to a subcontractor) follows the workflow whose trade matches the sub's — the blank one is the default. The office moves a work order from its PO, the PO list or the job page; the crew moves it from their phone. Reaching the last step marks it finished.

Tools & calculators turn calculators on or off for this account

Menu show or hide left-menu items — drag them on the sidebar (Edit menu) to reorder

🏚 Post-Frame Estimator

Send to a job's estimate adds the priced lines (and labor, if installed) to the job's estimate → customer proposal

Only lines with a price are sent. Existing estimate lines on the job are kept; these are added after them.

🛰 Roof measure by address squares, pitch and planes from Google's 3D roof model

Award this bid

Invite more subs

They get the same package by email (or a link to copy).

Bid link

New loan

Funded outside SFT Bank the part of the principal you fronted by Venmo, Stripe, a card, etc. — not taken from SFT Bank cash. Tracked as owed back.
The whole principal comes out of SFT Bank cash.
Interest: $0.00Total due at maturity: $0.00

New job

Job site address
Job fields your own fields, set up under Settings
Funded outside SFT Bank part of SFT's $ that was sent by Venmo, Stripe, etc. — not taken from cash
All of SFT's $ comes out of SFT Bank cash.
Charged to vendor credit part of the costs above that went on a credit line — Raymond pays this to you in cash
Nothing on credit for this job.
Job profit: $0.00 Split: SFT profit: $0.00 · payout $0.00 Raymond profit: $0.00 · payout $0.00

About & updates

File on the serverVersion · buildStatusSizeUploaded
What's new in this version

Updating: python build_erp.py stamps the version from VERSION into every file; commit and git push plesk main deploys them. Every file should then show the same build here — a mixed build means a push didn't land. Rolling back: check out the previous commit (or git revert) and push again. Your data is separate — Admin ▸ Backup & data restores an earlier save.

❓ Help

Didn't find it? Ask a question or send feedback

💬 Send feedback

Feature ideas, bugs, questions — they go straight to the people who build this.

Sign in

Which company?

Your login is in more than one company. Pick the one to open — the one you're in now is marked.

User management

UsernamePersonAccessSign-inActions

🔑 Passkey only = two-factor for that login: the password stops working and only their passkey (phone/laptop biometrics or security key) signs them in. It can only be switched on once the person has added a passkey (My account ▸ Passkeys). Keep two passkeys on your own account before turning it on for yourself.

Add a user

Roles & permissions

Every user has one role. A role decides which sections show up and what can be done in each — the server enforces it, so nothing outside a role reaches that person's browser. Admin always has everything. A change applies the next time that user loads a page.

RoleUsersSees moneySections

Permissions

With this off, the money sections below are unavailable, jobs show only the customer price and the work, and estimates are view-only. Turn it on and untick individual sections for finer control.
They see just the jobs and contacts where they are the sales rep or assignee (matched by the person name on their login), plus anything they created themselves. Tasks, invoices and orders follow the job.
SectionSeeAdd & editDeleteMoney actions
Money actions = pay, pay back, record payments, void, mark paid. Add & edit needs See; Delete and Money actions need Add & edit.

Reset password

Make this a subcontractor login

They'll sign in to the crew app and only see the jobs assigned to this subcontractor — no money, and nothing about other subs.

Sign-in log last 100 events, newest first

WhenUserResultIP address

Login security

Also on by default: bcrypt password storage, an 8-character minimum that blocks common passwords, a 15-minute lockout after 10 failed attempts (by IP and by account), HTTPS-only cookies, and security headers. See the Sign-in log for attempts and the Cloudflare notes for perimeter blocking.

🔒 Add a passkey to continue

Your administrator now requires a passkey (2-factor) on admin accounts. Add one on this device to keep using the app — you'll use Face ID, a fingerprint, or Windows Hello to sign in from now on.

Void this payment?

Nothing is deleted. The entry is marked void, a reversing entry is posted to the ledger, and the activity log records who did it, when, and why.

Record loan payment

Paying the full remaining balance closes the loan automatically. A smaller amount records a partial payment and the loan stays active.

Passkeys

A passkey lets this account sign in with Face ID, fingerprint, or Windows Hello — no password to type, and nothing a phisher can steal. Add one on each device you use.

DeviceAdded

Attachments

FileCategorySizeAdded
Photos are shrunk to fit before upload; PDFs up to 8 MB.

Activity log who changed what, newest first

WhenWhoWhat

Statement for Raymond Brown

Everything settled between Raymond and the Trust in the period, plus what's still open as of the end date. Prints ready to sign.

Job log

DateNoteBy

Vendor statement

When the statement arrives, enter its closing date and total. Tick each charge that appears on it — anything unticked is either missing from their statement or something you forgot to record.

DateInvoiceWhatAmountUnpaidReconciled

Cash day

📅 Move to another day

It'll come off this day and show up on the day you pick.

Settle up

Sign to finalize

sign here — finger or mouse
sign here — finger or mouse

Edit ledger entry

Click a row to open that item.

Pay back

Open in new tab

New cash account

New credit line

New bill / charge

A bill tied to a job is counted as cash Raymond owes SFT until his reimbursement is recorded. A bill with no job is just something SFT owes the vendor.

Pay vendor

Bill history

DateTypeReferenceAmount

Mark job paid out

Each partner gets their $ back plus their share of the final profit.

Payment cards cards you front money on — pick them on jobs & loans as “Amex (1002)”

CardLast 4Still owed

Add a card