Features
Booking → Job → Invoice.
Here’s what makes that true.
Not a feature list. Every line below is something you can go click on in the app today — starting with the part crew get wrong the most.
The overtime engine
Base 8, 10, or 12. Then the tiers you actually work under.
Most invoicing tools wave at this with a single 'overtime' checkbox. This one gets an engine — and 55 automated tests that pin down every edge of it.
Set a base — 8, 10, or 12 hours — and however many tiers sit above it: 1.5x once you’re past the base, 2x once you’re past 12, or whatever your contract actually says. Cross a tier boundary by one minute and that one minute bills at the higher rate. Nothing is rounded down, and nothing retroactively bumps the whole day.
Lunch off the clock is the default — those minutes come out of the day before anything gets tiered. Flip it on for a job where lunch is paid, and the same minutes count toward the day instead, tiers included.
A shift that starts at 8pm and wraps at 6am isn’t two separate days or a negative number. Wrap earlier than call means the shift crossed midnight, and the hours after 12am still price as one day’s work.
Cut early? The day rate is a floor, not an hourly estimate. A four-hour day still pays the full rate, and the OT tiers simply never engage.
Punch in a day
This runs the same function that prices a real daily log — change anything and the math updates.
What it pays
$1,700.00
- Straight · 8.0h$800.00
- OT1 (1.5x) · 4.0h$600.00
- OT2 (2x) · 1.5h$300.00
This is the exact computeDay function that prices every daily log on the job page, feeding straight into the invoice draft — kit fee, mileage at the IRS rate, expenses, and reimbursements ride along as their own line items, never folded into labor.
Field logging
Log the day from a basement ballroom. Sync when you're back in range.
Sets have no bars. The daily log doesn't need any either.
Clock-in, clock-out, lunch, mileage, an expense with a photo — every field saves to the phone first. There’s no network call sitting in that path, so a dead zone doesn’t block the save.
Kill the app mid-shoot and relaunch: what you entered is still there. That’s the phone’s own database keeping it, not a cache that happened to survive.
If the same day gets edited from two phones before either syncs — you and whoever’s covering for you — the edit with the later timestamp wins, and the other device gets corrected on its next sync. The server keeps a record of exactly which edit won.
Step 1
Enter it
Clock-in, clock-out, lunch, mileage, an expense photo.
Step 2
Saved on the phone
Local database write — no network call in that path.
Step 3
Synced when back in range
Pull-to-refresh, or it syncs on its own in the background.
No portals
An estimate, an invoice, a booking ask — all three are just a link.
Producers hate portals. There isn't one.
Send an estimate or an invoice and the client opens a real page with no login screen in front of it — the link in the URL is the only credential involved. It shows the real balance and the real status, live.
There’s no card form on that page, and no working “pay now” button yet — pay by bank and pay by card are visibly disabled today, not hidden. What’s real today: you record the payment yourself once it’s actually in hand — check, Zelle, wire, cash — and the invoice’s status and balance update from that.
Booking works the same way. Your public page has no sign-up wall — “No account needed, this goes straight to your inbox” is the literal copy on it.
Estimate
free-lance.app/e/••••••••
Sent, awaiting a reply, accepted, or declined.
Invoice
free-lance.app/i/••••••••
Draft, sent, partially paid, paid, or overdue.
Booking
free-lance.app/u/••••••••
Your page — availability plus an inquiry form.
Import
Upload the invoices you already sent. They become the history you can report on.
You've been doing this for years before you heard of this app. Bring that with you.
Drop in PDFs, Word docs, or CSVs, up to 10MB each. An old résumé works too — it becomes credits on your history, not a rewritten résumé; there’s no résumé builder here.
Nothing is real until you say so. Every record the parser finds sits in a review queue first — approve it, fix a field, or reject it — and before you commit, it tells you exactly what pressing the button creates: this many jobs, this many invoices, this many new clients, this much income. Change your mind after? Undo removes everything that batch created and leaves everything else alone.
Social security numbers, ITINs, EINs, and full bank account numbers are stripped out of the text before any of it is saved — never stored, never sent anywhere. W-9s and tax forms are refused at this door entirely; they belong in the encrypted vault instead.
It reads text, not pixels. A PDF exported from your invoicing tool works; a phone photo of a printed invoice doesn’t, yet. Parsing runs on this server by default — opt into AI-assisted extraction for a document the built-in parser can’t handle, and it’s the redacted text that goes to Anthropic to be read, never the file itself.
Reporting
Every January, the numbers are already sitting there.
Cash-basis income, the way it actually gets taxed — not what you happened to bill.
Total income for the year — what actually settled, broken down by client and by quarter. Mileage at that year’s IRS rate. Expenses grouped by category. All of it pulled from the daily logs and payments already in the app, nothing re-entered.
It also lays out the quarterly estimated-tax dates for the year — a reminder, not tax advice. Confirm the real figure with whoever files for you.
Export the year as CSV or JSON and hand it off. A formatted PDF packet is planned, not built yet — the exports carry the same numbers today.
Booking page
One link that shows what days you're free.
It's not a website you maintain. It's a page you hand out.
Your name, your roles, a bio, and an availability calendar showing which days are already spoken for — no rates, ever, on a page anyone can open.
Under it, a booking-inquiry form that goes straight to your inbox. Whoever’s asking never creates an account and never sees a dashboard — just your page and a form.
Put the link on a call sheet, a crew list, a signature line. It doesn’t go stale the way a static one-pager does, because your actual calendar is what’s behind it.
Calendar
Confirmed jobs, tentative holds, and the days you've blocked — one grid.
Click a free day to block it. Click a blocked day to clear it.
Three layers render on the same month: jobs that are actually booked, tentative holds still at the inquiry stage, and days you’ve blocked off yourself. Click a free day to arm a range, click again — earlier, later, or the same day — to set it.
Subscribe to it from Apple Calendar or Google Calendar with a private feed link, and it shows up next to every calendar you already look at — not a new tab to remember. Regenerate the link any time and the old one stops working immediately.
Documents
One W-9 per year, encrypted, not sitting in an email thread.
The form with your Social Security number on it deserves better than a Sent folder.
Upload a PDF, up to 8MB. It’s encrypted at rest, and being logged in isn’t enough to get it back out — downloading or sending it needs a fresh code from your authenticator app, every time, not just once at login.
Send it to a client and they get a link that expires in 72 hours. The file itself is never attached to that email.
Either way, the app never reads the number on the form — the W-9 is a document it stores and moves, never a field it parses.
Where things stand
Everything above is running today. There’s just no public sign-up button yet.
Leave your email on the pricing page and hear about it the day it opens.
See pricing