The shape of the app
Two ideas explain nearly all of KitSlate. Learn these and the rest of the manual is just detail.
1. A production holds five documents
You never create a loose call sheet or a floating quote. You create a production, and it carries five documents that share its name, client, dates, location and letterhead:
They feed each other. Gear you pick shows up priced on the quote; crew on the quote can be pulled onto the call sheet; the quote turns into the invoice; the call sheet's talent list fills the agreement.
Not every production needs all five. An equipment-only rental has no call sheet; a favour for a friend has no invoice. Any document can be marked not required — it stays, subdued and restorable, and stops counting against you. Say nothing and all five apply, exactly as they always have.
The app calls this thing a production on the create button, a project in the page title, and a job or a shoot in a few older screens. Same object every time.
2. The company switch filters everything
The top row of the sidebar carries the KitSlate mark and, beside it, the company you are working in with its coloured bar. Click it for the switcher. It is not a label — it is a filter that silently applies to Today, Projects, the Calendar, All Documents and most Reports.
- Single tap — a light switch. Turns that company's data on or off everywhere, without moving you.
- Double tap — "run everything as this company". The whole app now works as them.
- All companies — every light on.
Each company in the menu also tells you what it is doing today — "on location — Rooftop Series", "client in the studio", or "quiet today". With only one company there is no switcher at all; the row is just the logo.
Check the company switch before you assume something was lost. An empty Projects page usually means a company is switched off — which is why several empty states end with "…or switch the company filter in the sidebar".
The sidebar, top to bottom
The sidebar carries navigation and nothing else. Status moved to the topbar, and everything about you moved into the account button at the bottom. It is designed to fit a laptop screen without scrolling.
| Row | What's in it |
|---|---|
| Workspace | The KitSlate mark and the company switch above. |
| Search / + | Search or jump to… (or ⌘K) opens any screen by name. + is Create Production. |
| FAVOURITES | Only appears once you pin something. Drag to reorder. |
| Work | Home, All Projects, All Documents, Calendar, To do (everything waiting on you) and Activity (with its unread count). |
| Records | Inventory / Equipment, Clients, Crew, Invoices, Quotes, Camera Settings — the things you reuse on every job, plus the two documents that also stand on their own. |
| Business | Reports and External Rentals. |
| Network | Rate Guide, Market and Profile — the shared, opt-in parts, and the public face that goes with them. |
| Your name | The account button. Profile, Companies, Settings, Billing, keyboard shortcuts, the manual, and Sign out. |
Pinning and hiding — make it your sidebar
Hover any nav row and a ⋯ appears at its right (right-click does the same thing).
- Pin to Favourites — the row moves up into a Favourites block under the search box. Drag pinned rows to reorder them.
- Hide from sidebar — the row disappears from the list. It is not removed: ⌘K still opens it, and so does every link to it elsewhere in the app. Home cannot be hidden.
- Edit sidebar… — turns on a mode where the pin controls are always visible and a HIDDEN block appears at the bottom listing what you have suppressed, with Reset to put everything back.
Pins, hidden rows and the Continue list are stored on the device you are using, per person. They are not synced, so a colleague in the same workspace does not see or change yours.
The status button
Top right of every page is a small button reading either Clear or a count and to do. Click it for the operational panel: what needs attention, shoots today, what is coming up, equipment out and faulty, unread messages, and where your data last saved. Every row in it is clickable and goes to the page that can fix it.
The number on it is the number of rows on To do — the same list, counted the same way. When you clear one, the count goes down by one. It reaches zero.
There is no longer a Settings button in the sidebar. It is in the account menu at the bottom, alongside Billing and the manual.
Signing in
There are no passwords anywhere in KitSlate.
- Continue with Google — one click, straight in.
- Email link — type your address and press Email me a sign-in link. You get "Check <your address> for a sign-in link". The link expires shortly and works once.
Those two buttons sign existing accounts straight in. They create a new account only for an address that holds an invitation — the restriction lives in the database, not on the screen, so pressing them with an uninvited address refuses rather than signs you up.
If you have no invitation yet, the sign-in screen offers Join the waitlist. If you were sent one, accept it from the invitation email first, then sign in with the exact address it was sent to — your account is created as you do, and another address cannot attach it.
You can also press Play in the demo sandbox — no account, which is the workspace every screenshot in this manual was taken in. It is pretend data you cannot break, and it needs no invitation.
What signing in actually changes
The app works fully without an account — but everything saves into that one browser and nowhere else. Signing in makes your workspace live on the server, and the server copy becomes the real one. Sign in on a new laptop and your work is there.
Signing in is also what unlocks Activity, the Market, feedback, team seats, billing, and handing documents off to guests.
Top right of every page, the last row of the status panel tells you where your data is: Saved to your account 5m ago is what you want. Saved on this device means the browser is the only copy in existence — see Your data & backups.
Two smaller things worth knowing: a brand-new account lands on Pick your plan before anything else opens, and signing out deliberately clears the workspace off that device — it is parked on the server and comes back when you sign in again.
↑ ContentsYour first half hour
The app is most useful once it knows your gear, your people and your rates. Do these in order.
- Set up your company. Settings → Your business → Companies & branding. Name, address, email, phone, logo and brand colour. This is the letterhead on every document you send, so it is worth ten minutes.
- Get your gear in. Inventory / Equipment. Add items by hand, or use Import / Export ▾ to bring in a CSV, an insurance schedule or even a photo of an old list. Set day rates as you go — they are what price your quotes.
- Add your people. Crew → + Add crew. Role, day rate and contact details are enough to start; you can fill in tax paperwork and certifications later.
- Add a client or two. Clients → + New client.
- Start a production. + Create Production. Pick where you are starting from, give it a name, a client and a date, and it produces the gear list, call sheet and quote in one pass.
- Export a backup. Settings → Connections & data → Data & backup → Export backup (.json). Do this now so the habit sticks.
The sandbox is a complete second workspace full of realistic demo data, reachable from the welcome screen or by adding #demo to the app URL. Nothing you do there touches your real work.
Today
The operations centre. What needs you, what is happening today, and where you left off.

There is no heading and no summary sentence
The page used to open with MASTER CONTROL in large caps and a line underneath reading "Busy day ahead. 1 invoice overdue · 2 jobs waiting on crew confirmations…". Both are gone. The top bar already names the page, and the sentence only restated the list directly beneath it — so the first thing on screen is now the counters, and the first thing you read is a number rather than a paragraph about numbers.
The sections, in order
The order is deliberate: what is going on, then what needs you, then what is happening and when. Everything below that is supporting.
- NOW — one strip of counters in three groups. Operations: shooting today, coming up, crew working. Inventory: out, in storage, faulty, due back. Communications: unread, awaiting reply, market enquiries. Every counter is clickable and lands on the list it counts. Today's date sits on the section label and opens the Calendar on today.
- NEEDS ATTENTION — the same pooled blockers as before, but now sorted into three bands so they stop competing:
- CRITICAL — overdue invoices, declined quotes, finished shoots not invoiced, an imminent shoot with no crew, unsigned agreements, and the agreement failures (a minor with no guardian signature, a declined agreement, a bounced signing email, an expired link, people on camera with no agreement at all).
- REQUIRES ACTION — call sheets not sent, jobs waiting on crew confirmations, gear still to pack, quotes awaiting approval, quotes priced but never sent, agreements never sent, overdue reminders, crew credential warnings, and enquiries awaiting reply.
- WAITING — an invoice that is not overdue but not yet paid. Somebody else owes you something and there is nothing to do but wait.
This list is only ever unresolved work. Things that have already happened live in Activity instead. - TODAY'S TIMELINE — the day laid out down a time column, the way a calendar reads. Commitments with a real time come from the call sheet's key times and its schedule rows, and from any connected calendar. Anything dated but not timed — a shoot day, gear due back, an invoice due — sits in an All day band at the top rather than being given an hour nobody entered. A thin accent line marks the current time. On a long day it shows the first fourteen entries and offers +N more today, which opens the Calendar's day view.
- ACTIVE PRODUCTIONS — up to six jobs in flight, soonest first. Each row shows the client, when it lands, and its top one or two blockers on the right — or on track. Click to open the job.
- SUPPORTING — three smaller cards under the timeline. Crew (roster size and who is booked next), Due back (gear due back and invoices due, with anything overdue flagged), and Meals (the group-lunch card, which becomes an Order lunch button once a call sheet carries an order link).
- RECENT ACTIVITY — the four most recent things that happened, newest first: documents sent, handoffs filled in, call sheets opened and confirmed, agreements signed, invoices viewed and paid, enquiries received. Each row says which direction it went (← came in, → went out) and how long ago. It sits low on the page on purpose — it is a record of things that have already finished. View history → opens Activity in full, and the label carries a count of anything awaiting a reply.
- CONTINUE — the documents you had open most recently, newest first, with how long ago. Only appears once you have opened something. Click to go straight back in.
- CREATE — a compact launcher: Production, Equipment list, Call sheet, Quote, Invoice, Agreement, Camera settings, Marketplace listing, Rate Guide. The same launcher is on the sidebar's + and on ⌘K.
- BUSINESS HEALTH — collapsed by default. Opens to the MY DAY card, everything dated in the next 30 days, and booked days per week for the next eight weeks.
- INSIGHTS — collapsed by default. The stats tiles with their Curious / Serious toggle: total income, booked pipeline, quoted-not-invoiced and average job value on one side; your workhorse, your best payback and what never left the shelf on the other.
If a day looks emptier than it is, the call sheet has no key times and no schedule rows against it. Fill those in on the call sheet and they appear here. KitSlate never invents an hour for something that only has a date.
The month grid is gone from this page. It answered "when is August free", which is not the question you ask at six in the morning — and the Calendar is one click away, or one pin away if you want it at the top of your sidebar.
To do
Everything waiting on you, in the order it matters, each with the button that does it.

KitSlate already works out what is outstanding on every production — an invoice past its due date, a quote that came back declined, a shoot that has wrapped with no invoice raised, a call sheet nobody has sent, crew who have not confirmed, signatures still owed, gear not packed. This is that list, flattened across every job and sorted so the things that stop something happening sit at the top.
Three bands
| Band | What is in it |
|---|---|
| Now | These stop something happening — an overdue invoice, a declined quote, a wrapped shoot with no invoice, an imminent shoot with nobody on the call sheet. |
| Waiting on someone | Sent, not yet answered: confirmations, signatures, quote approvals. Nothing here is yours to do; it is here so you know who to chase. |
| When you get to it | Nothing is blocked by these. |
How to use it
- The button on the row is the fix. Record payment opens that invoice; Send the call sheet opens that call sheet; Chase confirmations opens the despatch dialog for that production. You do not have to find the job first.
- Open, beside it, goes to the production itself if you would rather see the whole picture.
- Each row is one thing. A production with four things outstanding appears four times, because each has a different answer.
- The count in the topbar is this list. Clear something and it leaves both together. With nothing outstanding the button reads Clear.
Requests you have sent out
When you ask a client or a crew member to fill in their own details (see Requests & approvals), each request is a row here for as long as it needs you. Waiting on someone holds the ones still out — Waiting on Leah Kim — sent 2 days ago with Resend and Copy link. Now holds the ones that need a decision: an answer that disagrees with what you already hold (Review), an answer held for your approval if you have that switched on, and a link that has expired (Send a fresh link). An answer that fills blanks and contradicts nothing folds into the record on its own and never appears here.

You cannot add to this list and there is nothing to tick off. Every row is derived from the state of a real production, so the only way to remove one is to do the thing — send the sheet, take the payment, pack the gear. That is deliberate: a list you can dismiss without acting stops being true within a week.
Activity
One chronological record of everything that moved — what you sent, what came back, and what is still owed a reply.
This page was called Messages, and it showed two columns: enquiries coming in, and documents going out. That answered "who wrote to me" but not the question you actually have each morning — what happened since I last looked. A guest filling in an equipment list, a crew member confirming a call sheet, a client signing an agreement: all of it was recorded, but only ever visible inside the job it belonged to, so you had to already suspect something had happened to go and find it.
Activity is one feed, newest first, grouped by day. Every line is something KitSlate recorded happening — nothing here is inferred.
What lands here
- Documents — every quote, invoice, gear list, call sheet and agreement you send, and each time a recipient opens one.
- Handoffs — when you hand a document to a guest, and again when they fill it in and it folds back into the job.
- Call sheets — sent, opened, and confirmed when a crew member taps the confirm link.
- Agreements — every signature, as it is signed.
- Requests — a client or crew member asked to fill in their own details: when the link went out, when they opened it, when their answers landed, and when you took or discarded a held answer.
- Invoices — sent, first viewed by the client, and paid.
- Enquiries and replies — from your public booking page and in answer to documents you have sent.
The four filters
Everything is the default and is what you want most mornings. Incoming narrows to things other people did; Outgoing to things you did. Needs reply shows only enquiries nobody has answered — the same set that appears in REQUIRES ATTENTION. Each filter carries its own count, so you can see whether a view is worth opening before you open it.
Direction is a filter and not a layout on purpose: if incoming and outgoing were separate panes you would have to check both to answer one question.
Enquiries look different, deliberately
Almost every line is a compact one-row record of something already finished. An enquiry is the exception — it is the one thing on this page you can act on, so it renders as a full card with the message body and its Reply, Mark read, Archive, Mail app ↗ and Delete buttons. Bigger means "this one wants you".
Archive marks it read and takes it out of the way without deleting it, and drops it out of the unread badge and out of Needs reply. It stays in the feed as a permanent record of the enquiry having arrived.
Delete removes the message from the database. KitSlate holds no second copy and there is no undo, so it asks first — archive instead if you only want it out of sight.
Updates arrive without opening anything
Opening Activity or Home asks the server for every handoff that has been submitted and every call sheet that has been opened or confirmed, across all of your jobs at once, and folds them in wherever they belong. That is what makes the feed current: previously each job only checked for its own updates, and only while you had it open.
Two kinds of message live elsewhere
- Market enquiries collapse into a single MARKET pointer card and badge the Market nav item instead — they are kept out of your work feed.
- Feedback threads with the KitSlate team appear as one card each, tagged FEEDBACK and KITSLATE REPLIED, opening a chat window with your screenshots attached.
If a line is stamped with a date that has not arrived yet, the day heading says Dated ahead rather than filing it under today. That normally means a clock difference between a device and the server; the event is real, its timestamp just cannot be taken at face value.
Projects & jobs
A dashboard, not a list. It answers two questions in order: what is blocked, and what lands next.

Requires attention — the production inbox
The panel across the top pools every blocker on every visible job into one line each: "2 invoices overdue", "1 quote declined", "3 call sheets not sent", "4 jobs with gear still to pack". Beside the heading is the total and how many jobs it spans.
Each row is a filter. Click "2 invoices overdue" and the board below narrows to just those two jobs; click it again, or Clear filter ×, to go back. The rows are ordered by how much they should worry you — overdue invoices and declined quotes first, credential warnings last.
When nothing is blocked the panel says "Nothing is blocked — every job is on track" in green, and stays where it is. It is a permanent fixture, not something that appears only in a crisis.
Deadlines and workload
Under the attention panel sit two cards, the same pair the BUSINESS HEALTH fold carries on Today. UPCOMING DEADLINES lists real dated commitments in order — "Invoice due — $1,182 · Fireside Chat — Ep. 4" marked 4d overdue, "Shoot day 1 of 2 · Sizzle Reel — Spring Range" marked tomorrow. NEXT 8 WEEKS — booked days is a bar per week, so a quiet month or a collision is visible before you have read a single job card.
When things land
Below those, jobs sit in date buckets rather than one long list: SHOOTING TODAY, TOMORROW, NEXT 7 DAYS, NEXT 30 DAYS, LATER, NO DATE YET, WRAPPING UP (past but not finished), COMPLETED and ARCHIVED. Empty buckets are not drawn.
Reading a job card
Top line is the name, then client · date · location, with a status pill and the date phrase on the right — today and tomorrow are shown in red. Under that:
- A percentage bar — overall completion, green at 100%.
- Five tracks — GEAR, CREW, QUOTE, INV, REL — each a small bar in that document's own status colour. Hover one and it names the state: "Quote — Awaiting approval · $4,200". A track marked not required draws a dash instead of a bar.
- NEXT ACTION — the single most useful next move, with a Do it → button that performs it without opening the job.
- Document chips — the five documents, coloured when started, faded when not, struck through when marked not required. Clicking one opens it; clicking Invoice before one exists raises it from the quote.
- The numbers — quote total, item count, crew count, agreements signed, and Summary ▸.
Clicking the card body opens the Gear List.
Starting one — + Create Production
The old four-step New Job wizard is gone. One button, + Create Production, opens a launcher that asks a single question: how would you like to start this production? The answers are a list, heaviest first:
| Section | Routes |
|---|---|
| START NEW | Blank Production — name, client, date, nothing else. Production Template — interview, corporate, podcast, live broadcast and more, matched against your own crew and kit. From Quote — converts an approved quote, bringing the gear it was priced on. From Calendar — reads title, date, time, client and location off an existing event. |
| START WITH A DOCUMENT | Gear List, Call Sheet, Quote or Agreement — creates the production the same way Blank Production does and opens straight onto that tab. For when the thought in your head is “I need to write a call sheet” rather than “I need to create a production”. |
| REUSE EXISTING | Duplicate Production (choose what comes across; no history follows), Reuse Gear List, Reuse Quote — the pricing only, as an unsent draft — and Reuse Call Sheet. |
| IMPORTS & INTEGRATIONS | Studio Booking — turn a booking into a production. Calendar Import — connect Google, iCal or Outlook. Marketplace Rental — turn a rental into a production. Import Production — read a call sheet CSV or PDF. Import Invoice — start from an invoice you already have. |
| Describe your production | The panel at the bottom. Type a sentence — "two-day corporate interview for Northwind at the Brooklyn studio starting the 14th" — and it is read into the fields for you to check. |
Whichever route you pick, the same three fields finish it: a name, a client and a date. Everything else is filled in while you work, and the health panel on the job says what is still missing.

Every route runs the same code the four-step wizard ran. Studio rental lines still land on the quote, crew bundled into a kit still bill at $0, the call sheet is still seeded, new clients are still created, camera presets are still inherited, and double-booking detection still fires. Only the four screens went away.
Anything already committed on those dates is flagged, and saving asks "⚠ N double-bookings on these dates… Book anyway?" You can always overbook — the app assumes you know something it does not.
This covers gear and studio rooms. It does not check whether a person is already booked, and it does not look at the External Rentals ledger.
Inside an open production

The top bar becomes the document toolbar: the production name, the five tabs, then the action bar — the same three controls on every document, in the same order, at the same size:
- The primary action, and only ever one, in filled green. It is the thing that finishes the job on that document: ✎ Edit equipment on a gear list, ✉ Send to crew on a call sheet, ✉ Send quote or ✉ Send invoice, ✎ Send for signature on an agreement.
- One secondary action, plain — the next most useful verb for that document. Preview on a call sheet or invoice, → Turn into invoice on a quote, ✉ Send on a gear list, ✉ Send a copy on an agreement.
- Actions ▾ — everything else, grouped in a fixed order: Add, Document, Sharing, Payments, Danger. A document may leave a group empty but never reorders them, so the same thing is always in the same place.
The bar cannot wrap and cannot change height. Previously each document built its own row: the quote carried six controls and two filled-green buttons and spilled onto a second line even on a wide screen, while the invoice detail page reached eleven. Documents now supply only their content — the layout is one shared component and is not theirs to change.
The bar shows the primary action and •••. The secondary action is not dropped — it moves to the top of the menu, so it is never in both places at once.
The production header
Under the toolbar, above the document, a full-width header carries the production's context. Its top line is the name, then date · location · first call · number of days, with the status pill, the completion bar and the percentage. Below that, four cells:
| Cell | What it tells you |
|---|---|
| WORKFLOW | The five documents as a column. ✓ complete, ◐ started, ○ not started, – not required. Click one to switch to it; hover for what is outstanding. Each row has its own ⋯ menu. |
| NEXT ACTION | One to three buttons that do the next useful thing — send the call sheet, record a payment, pack the gear. ✓ Nothing outstanding when there is nothing to do. |
| CALENDAR | The real dates this job carries — shoot date, call times off the call sheet, gear due back, invoice due. Deadlines are reserved a slot before call times, so a busy sheet can never push "invoice due" off the bottom. Every row is clickable. Nothing here is invented; if there are no dates it says so. |
| PRODUCTION HEALTH | What is wrong first, then what is already right, then the stage the production is at. |
Two smaller things worth knowing: a document tab whose work is finished carries a tick in the tab strip (✓ Agreements), and the right-hand panel on the gear list is now a PRODUCTION CHECKLIST — "4 things still to do — each one is a link" — listing the client, the shoot date, whether it is on the calendar, and then each document with its own status and its own ⋯ menu.
Zoom, paper theme, print and delete are not production context, so they are not in the header. They live in Actions ▾, which now carries a DOCUMENT group: ⧉ Duplicate project, Print / PDF — this document, Print all documents, Document theme — switch to dark/light, See it on the calendar, Summary & rundown, Archive this job… and Delete… — now reached through Actions ▾. Zoom is the small control that floats at the bottom of the window — screen only, printing is always 100%.
The per-document entries that used to sit under a job in the sidebar are gone — the workflow cell does that job now. Anything job-shaped in the sidebar lights All Projects instead.
Not every production needs every document
An equipment-only rental has no call sheet. A favour for a friend has no invoice. Every document row — in the header's workflow cell, on All Documents, and on the job card — has a ⋯ menu with Mark as not required.
- The document is not deleted. It stays visible, subdued and struck through, and Restore to workflow gives it back exactly as it was.
- It drops out of the warnings, out of the Attention panel, and out of the completion maths — so a gear-only rental with its call sheet and agreement switched off can genuinely reach 100%.
- Say nothing and nothing changes. A production you have never touched behaves exactly as it always did.
- The app will sometimes offer an opinion next to the menu — "Equipment only, nobody crewed — a call sheet may not be required" — but it never decides for you.
Approving, paying and archiving
- Quote approval — Mark approved asks "Has <client> approved this quote?" and moves the job on to invoicing. Mark declined is a separate action: the job stays put and the quote stays editable, so you can rework it and send again. Dismissing either dialog means "not yet", never "declined".
- Record payment — asks how much has been paid against the invoice and shows the total. Enter the full amount to settle it; enter less and the job reads "Partially paid — $X outstanding".
- Archive this job… — the end of the lifecycle. It drops to the ARCHIVED section on All Projects, leaves the date buckets entirely and stops counting toward anything needing attention. Every document stays exactly as it is — nothing is deleted, and Unarchive this job puts it back.
Delete from the Gear List tab and you delete the whole production and all five documents. Delete from any other tab and you remove just that document. The tooltips spell it out — read them before clicking.
Deleting a quote also deletes its invoice. If you want a job off the board without losing anything, archive it instead.
⧉ Duplicate project copies every document and appends "copy" — and deliberately resets all packing statuses and clears call-sheet delivery tracking, so the new job starts clean.
↑ ContentsCalendar


Four views — Day, Month, Month + day, Year — then ← → Today, + New (a planning event), Settings, a small clock, Calendars ▾ and Import / Export ▾. Which view it opens on, and whether the week starts Monday or Sunday, are set once under Calendar settings → Preferences.
The button carries the same name it does on Inventory, Clients and Crew, but on the Calendar it holds four routes rather than a file dialog. Under IN: Connect a calendar… and Calendar settings…. Under OUT: Publish KitSlate Calendar… and Export PDF — print this view. The first three all land in the same settings workspace.
- Returned jobs render outlined instead of filled.
- Draft shoots are drawn as a dashed outline in the company colour with a DRAFT badge. They reserve planning space without blocking the date — set a job to Draft or Confirmed under STATUS in the gear list's right-hand rail.
- Imported events are dashed, in their calendar's colour, with a start time.
- Call sheet dates — shoot day, travel day, scout, rehearsal, load in, strike — can be shown as their own entries. Off by default; switch them on in Calendars ▾ or Settings.
- A booking that runs more than one day says so on every day it occupies. The name sits on the day it starts, with the coloured spine; each following day reads 2/5, 3/5 and so on, so a Thursday in the middle of a run tells you which run it is and how far through.
- Days show as many bars as the cell can actually fit, then +N more. It is measured after the calendar is drawn rather than fixed at three, so a tall window shows more and a short one still never cuts a bar off at the bottom edge.
- Clicking a bar opens that job's Call Sheet — not the gear list. Worth remembering.
- Clicking a day opens a card over the month in Month and Year: every booking on that day with its client, location, crew and state, and a summary line giving the first call and how many need attention. Click a booking inside the card and it opens in place — call times, crew, company, quote and payment — with Take me to the project →. Click the day again, press Esc, or click away to close it.
- In Month + day there is no card: one click just moves the pane on the right, which is already showing the day you picked.
- Hovering a bar shows a KitSlate card with the client, location, crew and state — not the browser's own tooltip.
The calendar opens on the Day view — today, the timeline, and who is on set. The month grid is still there: its bars drop their text at phone width (they keep their colours and spans), and tapping a day opens that day rather than the split view. Your desktop default view is unchanged.
Calendars ▾ is the visibility panel: your companies, every connected calendar, and the overlays (draft shoots, call sheet dates, returned gear, crew and equipment counts) — each with its own switch, and a colour swatch where a colour applies. Those colours affect the calendar only; document brand colours live in Settings. Manage… at the foot of the menu jumps to the full page.
Click an imported event and the side panel names its Source, Calendar, Company, Status and when it was last updated — with a booking reference when the source calendar carries one — plus ↻ Refresh and Open in Google ↗.
Connecting an outside calendar

There is no longer a calendar-sync popup. Everything — connecting, editing, publishing, availability, visibility — lives in the Calendar settings workspace, and every entry point lands there: the Settings button on the Calendar toolbar, Manage… at the foot of Calendars ▾, both IN items on Import / Export ▾, and Settings → How you work → Calendar, which is a signpost that opens the same workspace rather than a settings page of its own.
+ New on the Calendar adds a planning event: a Hold, Pencil Booking, Client Meeting, Scout, Travel day, Equipment Service, Studio Maintenance, Block Time, Reminder, Deadline, Gear Reservation — or a Production you haven't built yet. Each carries its own status (Inquiry, Hold, 1st/2nd/3rd Hold, Quoted, Awaiting Approval, Confirmed, Cancelled, Released, Completed) and its own availability (Busy, Tentative, Available, Hold, Out of Office, Travel, or a Blocking state); the two are separate on purpose — a 2nd Hold can mark the day busy while an Inquiry doesn't.
A planning event links to a real production rather than copying it: Create production builds one prefilled from the event, Link existing… attaches one you already have, and when you create a production the normal way on matching dates, KitSlate asks whether it belongs to the plan. Once linked, the event's panel shows the production's quote, call sheet, gear and invoice state, a timeline of what has happened, and plain-fact prompts like No quote attached or Hold ageing. Planning events draw as dotted outlines in their company's colour, and can be hidden under Calendars ▾ → Planning events.
The workspace has a rail down the side with four sections at the top, then BEHAVIOUR, then HISTORY.
- Control tower — not a settings page. One measured verdict on the calendar itself: OPERATIONAL, ATTENTION REQUIRED or UNSAFE, with an overall score and, when it is not clean, the weakest link named. A connection that has never synced, or whose last sync is older than a day, reads STALE — and any room it maps to reads "availability uncertain" rather than free. It fails closed on purpose.
- Connections — one card per connected calendar showing its company, what it blocks (if anything), its time zone, what it is connected with, last sync, event count and read-only calendar ID, plus ↻ Refresh, Edit and Disconnect, and ↻ Refresh all below them. + Add Calendar starts the two-screen wizard described below.
- Resource map — which sources can reach which of your rooms, and therefore who can make one unavailable. External calendars are adapters that report events in; rooms and bundles are the things that actually become unavailable. Nothing syncs provider to provider.
- Publishing — two things. External Calendar Subscription is a private live feed per company: Create calendar link mints a secret URL that Google Calendar (Other calendars → From URL), Apple Calendar (File → New Calendar Subscription) or Outlook subscribes to; from then on it stays current on its own — KitSlate updates the feed immediately, and the provider refreshes on its own schedule. Copy calendar link, Test feed, Regenerate link (kills the old address instantly) and Disable. Feed-content switches choose what subscribers see: key dates, gear due-back, drafts, invoice due dates (never amounts), locations, client names. The feed is one-way — editing an event in Google never changes KitSlate. Anyone with the link can read that company's calendar, so treat it like a password. Calendar Snapshot is Download calendar snapshot (.ics), a one-time file of the moment you export it; for a calendar that stays current, subscribe instead.
Under BEHAVIOUR:
- Studio availability — pick a day and see which spaces are free and exactly what is holding the rest, across productions, imported bookings and planning events at once. With no rooms configured it says so and points at Studio → Rooms & spaces rather than showing an empty grid.
- Planning defaults — per company. Switch off the planning templates this company never uses and + New stops offering them; below that, what a new planning event starts as.
- Preferences — week start, default view, your time zone, Treat drafts as busy and Show call sheets.
- Visibility — the same switches as Calendars ▾, in one place.
- Import history — every refresh of every connected calendar, newest first, with the time, the event count and how it went. The last 40 are kept.
Under HISTORY:
- Activity log — what has happened on the calendar, searchable. Click through to a single object and you get the forensic view: everything that ever happened to that one booking, oldest first, each entry written by the action that caused it.
Adding a calendar
+ Add Calendar opens Add a calendar — five rows, one per source: Google Calendar (its secret address in iCal format, so nothing has to be shared publicly), Apple Calendar (iCloud), Outlook / Microsoft 365, Any iCal address, and Upload a .ics file — a one-time snapshot, refreshed only when you upload again.
Picking one goes straight to the form, which is the second and last screen: name, description, company, time zone, what it blocks, the connection type and the address itself. How does this work? at the foot opens the notes for the source you chose — where to find its address, what Import and Export each mean, and what "blocks" does — and ‹ Back to setup returns you to the form rather than to the top.
They come through whatever calendar they land in. Connect that calendar and its bookings come in with the next refresh — KitSlate reads the calendar, and where a booking originated makes no difference. Imports never write back to the source; two-way sync is not built.
Blocks defaults to Nothing — display only: the events draw on your calendar and that is all. That is the right setting for a company that isn't a studio — a production company's schedule is worth seeing without any room being marked occupied.
Pick a space only when the calendar genuinely means somewhere is taken. Then, on the day, the company switch says "client in the studio" and the MY DAY card (under Business Health on Today) names that room as client only.
A single connection can block several companies and several spaces — tag it with all of them rather than connecting it again. Connect the same calendar twice and KitSlate recognises it (by its calendar ID, or the address itself) and says "This calendar is already connected" instead of importing every event a second time.
Imported events are matched on the calendar they came from plus the event's own ID, so a refresh updates what is already there and never creates a second copy. Point KitSlate's own published calendar back at itself and it recognises its own handwriting and refuses.
Every calendar carries its own time zone, and every imported event is pinned to a real instant. Times are drawn on your clock — set under Calendar Preferences — while the source zone is kept and named on the event when the two differ. A studio in Melbourne and one in New York can share the same screen.
Connected calendars are read-only: edit the event in Google (or wherever it came from) and the change flows back on refresh. They also re-pull quietly when you return to the window, at most once a minute.
Download calendar snapshot (.ics) produces a one-time file, not a live subscription — download it again after changes. A live subscription link is served from your cloud workspace, so Publishing asks you to sign in before it will mint one, and the sandbox shows a simulated address rather than a real feed. Draft shoots stay out of the published file.
Connections drop history older than six months and cap at 800 events.
Switching a company off hides its calendar's events too, which looks identical to a dead connection. The app catches this and shows an amber banner — "N events from <calendar> are hidden because <company> is switched off" — with a Show them button.
All Documents
All Projects answers "what is live and what happens next". This page answers a different question: what documents exist, what state are they in, and what is waiting on someone else.

The sidebar calls it All Documents; the page itself is headed Documents. Across the top: a Search documents… box, + New Document, and the four view tabs.
Four views
| View | What it is for |
|---|---|
| By Production | The default. Every document stacked under the job it belongs to. |
| By Document | A table across all jobs — every quote together, every invoice together. |
| Needs Attention | Only what is unfinished or unstarted. Documents marked not required drop out entirely, because they need nothing. |
| Recently Updated | What actually moved, newest first. |
Reading a row
In By Production each job is a collapsed header first — name, client · when, then a one-line summary ("1 complete · 2 awaiting response", "5 to do", "nothing here yet"), Next: the most useful action, and a completion bar. Click it to expand the five document rows underneath.
Every document row is the same shape: icon, document name, a status word in that status's colour, some meta, and a button that does the next thing — Send quote, Record payment, Chase confirmations, Add talent. On the right, the same ⋯ menu you get everywhere else.
The vocabulary is per document type, because "awaiting approval" means nothing on a gear list and "returned" means nothing on an invoice:
| Document | The words it uses |
|---|---|
| Gear List | Not started · In progress · Ready · Checked out · Returned |
| Call Sheet | Not started · Draft · Ready to send · Confirmations pending · Complete |
| Quote | Not started · Draft · Awaiting approval · Approved · Declined |
| Invoice | Blocked · Not started · Draft · Sent · Partially paid · Paid · Overdue |
| Agreements | Not started · Not sent · Sent · Partially signed · Complete |
An invoice reads Blocked until its quote is approved. Nothing is wrong — it just isn't its turn. The row still offers you the way through: Open quote, or Mark the quote not required.
This page, the workflow cell in the production header, the job cards on All Projects and the production checklist all read the same underlying status. If a quote says "Awaiting approval" here it says it everywhere.
Filters
One chip row above the list: the five document types, then Needs attention / Waiting on others / Complete, then Next 30 days / Past shoots / Not required, and Clear × once anything is on. They apply to every view, not just one.
The Not required chip narrows to them; it does not reveal them. They are on the list already, subdued — the whole point is that they are still part of the production, just not wanted.
Recently Updated only lists real events — a send, an approval, a payment, a requirement change. There is no per-document "last edited" timestamp in KitSlate, so rather than invent one, a document nobody has done anything to simply carries no time. "Updated 1 minute ago" about an empty quote would be a lie.
How documents work
All five behave the same way, so learning one teaches you the rest.
Four ways to create one
- + Create Production — the launcher, described under Projects & jobs. Produces the gear list, call sheet and quote together. This is the usual route.
- The CREATE launcher on Today — Call Sheet / Quote / Invoice / Agreement open a blank draft with a strip at the top reading "Name this call sheet…". Equipment list instead opens a chooser with a START FRESH form and a list of existing jobs to attach to. (The per-document buttons that used to sit in the sidebar are gone — with a production open, the workflow cell in its header switches tabs.)
- From the Inventory — tick items, then use the bottom bar: Create Gear List →.
- The quick gear list wizard — one form where the equipment can be your current selection, a saved kit, or a copy of a past gear list.
A document you decide you don't want isn't deleted — it is marked not required, which keeps it and drops it from the warnings.

A draft you type nothing into is silently discarded when you navigate away. Give it a name in the top strip and it becomes a real job.
After you save any document, a prompt offers the missing siblings: "<Document> saved — what else does '<job>' need?", with No thanks — I'm done.
Printing, PDFs and sending
- Print / PDF — this document prints the open sheet. Print all documents prints every document in the job, each on its own page — don't navigate while it works.
- ✉ Send opens the send dialog — described below — and attaches a real generated PDF. For quotes and invoices the attachment mirrors the document: same sections, subtotals, totals and payment details as the page and the hosted copy. What was sent, and what happened to it, then shows on the document's STATUS card — see below.
- CSV is available for the gear list, the call sheet, and invoices in three flavours (QuickBooks, generic/Wave, and grouped by ledger account).
The Status card
Every document page opens with the same STATUS card, directly under the production header — GEAR LIST · STATUS, CALL SHEET · STATUS, QUOTE · STATUS, INVOICE · STATUS, AGREEMENT · STATUS. Learn it once and you have learned it on all five: the layout never changes, only the facts do.
- Collapsed (one row) — the document's state in words (Awaiting approval, Confirmations pending, Overdue, 2 of 3 signed…), the figures that must never hide (an invoice's outstanding balance and due date live here), the delivery tally (3 sent · 2 opened · 1 confirmed), the first few recipients with a ✓ once they have acted, and the buttons: View status, ✉ Resend / add people (or a single ✉ Send before anything has gone out), and Details ▾.
- Expanded (Details ▾) — a RECIPIENTS grid, one row per person, with a stamped chip per step: Sent, then Opened / Confirmed / Viewed / Paid / Signed as applies to that document, each with its time. A ? on a chip means a soft signal (mail apps proxy images). Below the grid come the document's own extras — catering on the call sheet, the approval record on the quote, the payment line on the invoice, the signer pills on the agreement, and a HANDOFF row on any document you have assigned to someone. A closing line says plainly what is and isn't tracked for that document.
- Warnings never hide. Failed deliveries, a signed minor still missing a guardian signature, signers gone quiet past your reminder mark — these show on the card even when it is collapsed.
The card is a readout. Its buttons open the same screens they always did — View status opens the delivery window, Send opens the send dialog — and the counts on the card, in the delivery window and on the workflow rail are the same arithmetic, so they cannot disagree.
The send dialog
All five documents share one send dialog. Only the title, subject, body, preview and attached PDF differ — the call sheet, gear list, quote, invoice and agreement are otherwise identical to send, so learning it once is enough. (An agreement has a second, different button — ✎ Send for signature — which mails a private signing link per person rather than a copy. See Agreements.)
Its header names the document, the production, the date, the company whose letterhead is on it, how many recipients are ticked, and the state of the send — Ready to send, No recipients yet, 4/6 confirmed or 3/6 opened. Then two panels:
- Left — To as recipient chips, each with the person's photo or initial and a dot for their status. Click a chip to leave someone off this send without removing them; the × removes them. + Add people opens a picker over your crew and clients, grouped, with search — or type a full email address to use one that isn't in either. Below that: subject, message, the attachment and who it comes from.
- Right — a reading-width preview of the actual email, plus the delivery history for this document: who it went to, when, and whether they opened or confirmed.
If people on the call sheet have no email address, the dialog names them: "2 people on the sheet have no email — Dana Reyes, Sam Okafor. Add one on their crew record and they'll appear here."
The Document theme — switch to dark/light item in Actions ▾ changes the paper only, across all five tabs. It used to live on the floating PROJECT rail, which no longer exists. Light is the client copy — that is what the printed examples below look like.
Gear List
What physically goes out, what it rents for, and whether it came back.

The packing and return workflow
Every row carries four toggles — IN CASE ✓, RETURNED, MISSING, FAULTY. Click again to clear. These are not just marks on paper: they write straight back to your inventory availability.
| Mark it | Inventory becomes |
|---|---|
| IN CASE ✓ or MISSING | out |
| RETURNED | in storage |
| FAULTY | faulty |
Set GROUP BY to Case and the groups become case cards with a progress bar and ✓ all packed / ✓ all returned / "x / y packed" — which is how you pack a van without a clipboard.
Reset statuses under ACTIONS wipes every packing mark on the sheet and puts all of it back "in" in your inventory. There is no undo.
The right-hand panel
- SHOOT NAME and rental income per day.
- PRICING TERM — Per day, Weekend, Week, Month. Standard rental maths: a weekend counts as 1 shoot day, a week as 3, a month as 10. Only the terms you enabled in Settings appear.
- RATES — WHERE IS THE GEAR WORKING — Studio / Outside / Rental. This re-prices every linked item from its three stored day rates.
- GROUP BY — Category or Case.
- SHOW ON THE SHEET — chips for Model, Serial, Case, Rates, Cost, Replace $, Purchased and Notes. Dimmed when no item has that data. These control what prints.
- STATUS — Confirmed or Draft. A draft shows on the calendar as a dashed outline with a DRAFT badge, stays out of the published .ics, and does not hold the date or the gear unless you switch on Treat drafts as busy under Calendar settings → Preferences.
- ACTIONS — Export…, Add to Google Calendar, Expenses, Reset statuses.
Actions ▾ → Add offers equipment from your inventory, outsourced gear sub-rented from another house (tagged OUTSOURCED and pushed onto the quote), and ↗ Assign — hand the gear list to someone outside the workspace.

Download CSV always contains every column regardless of the SHOW chips. Apply & Print / PDF prints exactly what the chips reveal.
Call Sheet
Where everyone needs to be, when, and how to reach them if it goes wrong.

What goes on it
In order: Job, Venue Name, Address & Main Entrance, Freight Elevator, Google Maps, Meeting Point, Point of Contact, Dress and Weather. Then the key-times strip — Crew Call / Shooting Call / Lunch / Est. Wrap, whose labels you can rename — followed by:
- CREW — crew, name, phone, email, call time, location, floor.
- SCHEDULE — time, activity, detail, notes, equipment. Plus + add next-day schedule and + add department note.
- + add talent and + add client on set — the talent list is what feeds the Agreement.
- SHOOT PLAN — cameras and audio, prefilled from the job's camera settings.
- Safety — Hospital, Urgent Care, Nearest Subway / Transport, Nearest Parking, and the confidentiality line.
- MEALS — GROUP LUNCH ORDER — paste a group-order link and an Order lunch button appears in the emailed sheet. A lunch note on its own, with no link, travels too.
- NOTES and Walkie Channels.
Type it, or press ↻ to fetch a real forecast from the address and date. It needs both, and only reaches about 16 days ahead.
Getting crew onto it
Actions ▾ → Add → + Crew — from your crew database… opens a searchable picker. Each person shows + Add · <their role> and, if they have one, a second button for their secondary role — that choice decides which rate the row uses. Two shortcuts sit at the top: ⇄ Everyone on the quote (N) and + Blank row — type manually.
Type a name into a blank row and the app links it to your address book: if it matches someone you are asked "'X' looks like Y in your Crew address book. Link them?"; if it matches nobody, "Save 'X' to your Crew database?". Phone and email you type here flow back and fill blanks on their record.
Actions ▾ → Add also offers + Import call sheet CSV… and AI import — any production's call sheet…, which reads someone else's sheet and links the names to your crew automatically.
+ Import call sheet CSV… expects a file that came out of Export call sheet CSV. Anything else is refused and nothing changes. A real one asks you to confirm first, then replaces the crew, schedule, cameras and venue details on this call sheet — it does not merge them in.
Sending it — and tracking confirmations
✉ Send to crew opens a three-column drawer: FROM (follows the letterhead), a TO roster with tick-boxes (a NO EMAIL chip flags anyone missing an address), and a live EMAIL PREVIEW. Press Send ✉ — N people.
The email carries every section the sheet has — the same content as the attached PDF, so nobody has to open an attachment on a phone to find their own call time. That includes talent's pickup and HMU times, CLIENTS ON SET, NEXT DAY — ADVANCED SCHEDULE, DEPARTMENT NOTES and the weather line. A Google Maps or lunch link pasted without https:// still opens; if it is not a usable address at all, it is printed as text you can copy rather than a button that goes nowhere.
It sends one email per person so nobody is CC'd, each carrying their own one-tap ✓ Confirm — I'll be there link. The CALL SHEET · STATUS card then tracks each person through Sent → Opened → Confirmed — the tally and how many are on set sit in the collapsed row; open Details ▾ for the per-person grid with times, and a CATERING — WHO'S EATING WHAT summary rolled up from your crew's dietary flags.

Templates and sheet types
Actions ▾ holds SHEET TYPE — Shoot Day / Travel Day / Scout / Rehearsal / Load In / Strike — the letterhead picker, and TEMPLATES, where Save this as a template… keeps a layout you can load onto future jobs.
KEY DATES, under the venue table, is where a sheet gets more than one day: a scout the week before, load in the night before, strike the morning after. Each row is a type and a date, each draws on the Calendar when Call sheet dates is on, and each clicks straight back to this sheet. Leave it empty and the sheet simply sits on the shoot date. It is screen-only — the printed and emailed call sheet is unchanged.
↑ ContentsQuote
The price of the job, in five sections that each collapse to one client-friendly line.

Sections: STUDIO, EQUIPMENT, LABOUR / CREW, MISC and BANKING / PAYMENT FEES, each with a + on its header. Every line has DESCRIPTION, DATE, RATE, QTY, DAYS, TOTAL and a ×; + details adds a notes block and a ledger-account picker.
The + on BANKING / PAYMENT FEES is the exception: it opens Payment methods and fees rather than a line picker, because a banking fee belongs to a way of paying. See Payment methods and fees.
Each section header carries a three-state control — Show all / One line / Hide — and all three stay visible, so what the client will receive is never a guess about what an ambiguous chip meant. One line is what you want when a client should see "Equipment package — $1,285" rather than 30 rows; the detail stays saved either way. Hide leaves the section out of the document, the PDF and the email. The control is editor-only and never prints. Hide empty sections tidies the rest away.
Pulling from the other documents
Actions ▾ → Add → PULL FROM:
- ⇄ A gear list — priced items & kits
- ⇄ Call sheet crew — as labour lines
Equipment lines created from a gear list keep a hidden link, so adding or removing gear updates the quote. It works the other way too: deleting a linked equipment line on the quote also removes that item from the gear list. Hand-typed lines are never touched.
Two side effects of pulling: items with a $0 day rate are skipped, and pulls de-duplicate by description — so a renamed line can come through twice.
Crew lines, overtime and discounts
Crew lines show DAY RATE × DAYS plus an OVERTIME column (×1.5 = $/hr) and a + with gear / – person only switch for people who bring their own kit. Bill a line below its listed rate and you get a struck-through "listed" figure and an automatic DISCOUNT row. Percentage banking fees recalculate on the pre-fee total.
A rate cell takes money written the way it reads: 1,250, $1,250.00 and 1250 all enter the same rate, so a figure copied from a document does not need cleaning up first. Rates are committed to the cent — type 100.005 and the cell redraws as 100.01, which is what is stored and what is charged.

Actions ▾ sets the equipment pricing term, PAYMENT TERMS (Due on receipt through Net 60), which sections and columns show, and links to ⚙ Quote settings for the defaults that apply to every future quote.
↑ ContentsInvoice
A frozen copy of the quote, with its own number and date.

You never start an invoice from scratch. Use → Turn into invoice on the quote, or click the greyed-out Invoice tab. With no quote yet, the tab tells you "Needs a quote first" and sends you there.
It takes its own number, invoice date and terms. The quote keeps living alongside it.
Numbers are sequential, per company, and set under Settings → Money → Invoices → Invoice numbering: a Prefix (blank is fine — you can number 1, 2, 3), Minimum digits (4 gives 0007, 0 gives 7) and the Next number. The page previews the next three and tells you the highest number issued so far.
Next number sets a floor and cannot be dropped below the highest number already issued — two invoices carrying one number is an accounting problem, not a preference. Changing any of this never renumbers an invoice that already exists, and imported invoices keep the numbers they came in with. The counter moves only when an invoice is actually raised, never on a preview.
When the two drift apart
Edit either side and a bar appears — OUT OF SYNC or BIG CHANGE — offering Keep them different, Save old as vN & push, or Push to invoice. Archived versions come back via Restore v1 · date.
Once you have imported your invoice list under Reports → Income tracker, the ACCOUNTING REFERENCE strip also shows UNPAID / PARTIAL / PAID, the amount paid, the due date, and whether the figure still matches the quote.
The INVOICE · STATUS card above it keeps the money readable at a glance and never hides it: the outstanding balance and due date (turning red with — overdue when it passes) sit in the collapsed row, the tally adds viewed and paid from the invoice's own hosted page, and Details ▾ shows the per-recipient grid plus a PAYMENT row — paid so far against the total, with Record payment for money taken outside the app.
Payment methods and fees
One dialog decides how a client can pay this invoice and what that costs. Open it from Actions ▾ → Add → + Banking fee — wire, card fees, free routes…, or from the + on the BANKING / PAYMENT FEES header. Both go to the same place.
Every method your company accepts is listed, each with what it costs you and the details the client will be told to pay into — bank block, Zelle address, Venmo handle. A method with nothing filled in says which Settings field would fill it instead of looking configured.
- Add / Remove — whether the method prints on this invoice at all. Nothing is offered until you say so; a new invoice starts with none of them on.
- Quote fee — prints "1% processing fee" beside the method. Wording only; the total does not move.
- Charge it — adds the calculated amount as a real line in BANKING / PAYMENT FEES, so it is in the total. Press it again to take the line off.
Online card payment (Stripe) sits at the top of the same list. Adding it is what gives the client a Pay button on the invoice page. Its row reports what Stripe will actually allow — switched on, on when sent, or blocked with the reason — so it never offers an action the server would refuse.
Add a method that costs you something and you are asked once whether to pass it on, with the arithmetic done: "Taking this payment costs you 2.9% + $0.60 — $34.60 on this invoice's $1,000." Decline and the amount you have chosen to absorb is said out loud.
Answer it permanently in Settings → Money → Payments: each method has You absorb it / Add to the invoice. Until a method is set, it keeps asking on every document — an unanswered question is not permission to bill a client.
One-off fees
Below the methods sits ONE-OFF FEES — lines that belong to no payment route. A wire surcharge under $1,000, a correspondent bank's cut. Add blank row drops an empty line into BANKING / PAYMENT FEES for you to type yourself. A blank line is yours to edit but not yet the client's to see: the section joins the invoice, the PDF and the email the moment a fee has a name or an amount, and stays off all three until then.
These are not ways to pay: they never print in the payment block, and removing a payment method never removes them. The catalogue behind them is shared by every company, while payment methods belong to one company each — which is why the two are edited on separate tabs in Settings.

The PDF attached to invoice and quote emails follows the same structure as the page and the hosted copy: the same sections with their headings and subtotals, the same totals, the same payment details, and — on a published invoice — the same paid / partly paid / overdue status. Dates and amounts format identically everywhere.
One deliberate difference: the attachment never carries the payment link. A PDF gets forwarded and filed beyond the original email, so the private link stays in the email itself and on the hosted invoice — the attachment says exactly that in its payment section, and paying online happens from those two places only.
Invoices published from now on carry the same section grouping you built onto the hosted page the client opens: section headings, per-section subtotals, combined subtotals, and a section you collapsed to one line stays one line. Invoices published before this keep the simpler list they were published with — nothing already sent changes.
Totals, amount due and the paid / partly paid / overdue status always come from the authoritative invoice record, never from the page's presentation — the sections are how the document reads, not what it charges.
The hosted invoice's Pay <amount> securely button opens a real Stripe checkout. Your client is charged, and the money lands in your own Stripe balance — KitSlate takes no cut and never holds the funds. Treat it as live: do not press it on a real invoice to see what happens.
It appears only when the invoice is published, still has a balance outstanding, has online payment switched on, and the company behind it has connected a Stripe account with charges enabled. Where any of those is not true, the payment block says so and lists whatever other methods you have set up instead.
What you see is what was published
Once an invoice is published, every copy you can produce of it — Download PDF, Print, the emailed attachment, the hosted page, the document panel on its detail page — renders the published record, not whatever the editor currently says. Edit after sending and the detail page tells you plainly: "The editor has unpublished changes — it says $4,720, while this published copy says $3,760." Press Send with unpublished changes and KitSlate asks first, with both figures, whether to Publish update & send — there is no way to email a mixture of old and new.
Editing a published invoice — revisions and versions
Edit invoice on a published invoice no longer takes it back to Draft, and the client's link never stops working. It creates a revision: a private copy you edit while the customer keeps seeing exactly what they were sent. The editor says so at the top — "Revision draft · based on Version 2. The customer still sees Version 2 ($2,006.85)." — with two buttons that end it: Publish update (the same link now shows the new version, and the customer's page carries an "Updated invoice — Version 3" notice) or Discard revision (the published invoice is untouched).
Every published version is kept. The detail page's VERSIONS panel lists the current one and every superseded one — open any of them read-only, download its own PDF, or Compare it against the current version line by line. History cannot be edited or deleted, and a paid invoice cannot be revised at all: correcting a paid invoice is a credit note or a second invoice (Duplicate gives you the same document under a new number).
The Invoices page
RECORDS → Invoices in the sidebar is every invoice you have raised, in one place: what is owed, what is overdue, and what has been paid. An invoice does not have to be a production's document any more — one raised here stands on its own.
Across the top, five summary cells:
- Overdue — the money past its due date, in red, with how many invoices that is.
- Due within next 30 days.
- Paid this month — counted by the date the money actually arrived, not the invoice date. A paid invoice with no payment date cannot be placed in a month, so it is left out and the cell says how many are in that position rather than quietly assigning them to this one.
- Average time to get paid — from invoices that have both a send date and a payment date. With too few, it says Not enough data instead of a number.
- Upcoming payout — always Not available. KitSlate does not read Stripe's payouts API, and a figure worked out from what has been paid would be a guess dressed as a balance, so the cell points at your Stripe dashboard instead.
Rows can belong to companies billing in different currencies, and there is no exchange rate anywhere in KitSlate. A mixed cell prints each currency on its own line and says "2 currencies, never added together". And because the cells are company-scoped, a switched-off company would make every one of them read as an absence — so where something is scoped out, each empty cell says "Not counting N invoices hidden by the company filter" rather than asserting that nothing exists.
Below the cells: the company switch (only with more than one company), then Filters, which folds open and carries a count of how many are active. Inside it — customer, status, an Issued date range, a Due date range, invoice number, production, and Clear filters. That last button is always drawn, disabled when nothing is set, so the row is the same height in every state and the list beneath it never jumps as you filter.
Then the status tabs, always in lifecycle order and always all of them, each with its count: Draft, Approved, Unpaid, Paid, All invoices. A stage that vanished when empty could not be reasoned about, so none of them do. Void appears as a sixth tab only when something actually is void — that is an exception, not a stage every invoice passes through.
The table itself: status, due, issue date, invoice number, customer, production, company, total, paid, amount due and payment method. Due, issue date, invoice number, customer, total and amount due all sort. Clicking anywhere on a row opens the invoice.
The row menu
The ⋯ at the end of each row is the only action control, and it lists only what that invoice can really do in its current state — nothing renders that would do nothing when pressed. What you see depends on what kind of invoice it is.
- A production's invoice — open it, view the client's page, edit the document (or just view it once paid or void), duplicate, open the production, send or email again, Record payment, payment history, open or copy the client link, download the PDF, print, and the timeline. Then, at the bottom, Void the invoice (cancels it without deleting the record) and Delete the invoice.
- A standalone invoice — the same shape without anything that needs a production. A draft's primary action is ✓ Approve invoice, not Send: approving and sending are two different decisions, and collapsing them made the amount a claim on somebody's money the instant it left the building. Once approved, ✉ Send invoice is the primary. Edit invoice on an already-sent invoice reopens it as a draft and says so — the client's link pauses until you resend. A paid invoice has no Edit at all: correcting what somebody has already paid is a credit note.
- An imported invoice — open it, open its production if it has one, and payment history. There is no KitSlate document behind it, so there is nothing to edit, send or print.
Copy client link copies a live link, and mints one first if none exists — the client's existing link is untouched either way and the new one is recorded. Duplicate invoice always produces a fresh unpaid standalone draft under its own number, from any state including paid and void.
The two doors at the top
- Import invoice… — an invoice raised somewhere else. It lands here read-only with the original file attached. Same importer as everywhere else; see Importing an invoice you raised somewhere else.
- Create invoice — raises a blank standalone invoice straight away. The ▾ beside it offers the same thing spelled out (Blank invoice — a standalone invoice, not attached to a production) and From production…, which opens the Create Production launcher.
RECORDS → Quotes is the simpler cousin: one card per production showing its client, date, location and the quote total — or not started. Click one to open that production's quote. It is a way in, not a second editor.
Deleting several at once
The Invoices list has a checkbox on every row (and on each card on a phone). The header checkbox selects everything visible in the current tab and filters; the selection survives switching tabs and filters, and the bar above the table says so — "7 selected · 3 visible in this view" means four more are selected in other tabs, and they will be in the batch.
Delete selected lists exactly what will go — numbers, customers, combined value — and requires you to type DELETE before the button arms. Invoices with a payment recorded against them are never deleted: they are named in the same dialog as protected, and they stay selected afterwards so you can decide to void them instead. Deletion is permanent, same as the single delete — client links stop working and there is no undo.
↑ ContentsAgreements
Anything that needs a signature — a talent release, a location release, or wording of your own — written once, sent, signed on a phone, chased and filed.

It is the same feature, the same signing engine and the same audit trail — it simply covers more than talent now, so the tab, the status card and the settings all read Agreements. Nothing you already had changed: existing releases open where they always did, old signing links still work, and every signature already collected is untouched.
Choosing what kind of document it is
The DOCUMENT TYPE bar above the page picks what this production needs signed. Three types ship:
- General Talent Release — someone appearing on camera consents to being recorded and to the material being used. Eight wordings ship under this type: General Talent, Appearance, Documentary, Commercial, Interview, Podcast, Reality TV and Social Media.
- Location Release — whoever controls a property gives permission to film there, to bring people and equipment onto it, and to use the resulting material. Signed by an Authorized Property Representative rather than talent.
- Other / Custom Agreement — write your own. A crew NDA, a contractor letter, anything that needs signing and is not one of the built-in types.
Switching type regenerates the document instantly. If people have already been sent the old one, KitSlate asks first — because they would otherwise be signing something they were never shown. Anyone who has already signed is never affected.
The Location Release
A location release is about a property, so the page carries a THE PROPERTY block the other types do not: Property / location name, Property address and Description of the premises. These are the only place those values are edited, and they feed the wording directly — type an address and the paragraph that quotes it resolves as you type, so you can see the real document rather than a placeholder.

They print as {{Property Name}}, {{Property Address}} and {{Property Description}}. Everything else — the production name, your company, your address — comes from what KitSlate already knows, so nothing is typed twice.
Other / Custom Agreement
Pick this type and you write the document itself on the production: an Agreement title that prints as the heading, and as many paragraphs as you need, each with move and delete controls. Merge fields work in them exactly as they do in a template, and clauses can be added on top.
A custom agreement is a one-off — its wording lives on that production, so writing one here cannot change any other job, and editing a built-in template cannot change this one. It saves to your account like everything else: reload the page, or open the production on another machine, and it is there.
What every type shares
Whichever type you pick, it is one signing system. There is no second workflow to learn:
- AGREEMENT · STATUS — the same status card every document has, here tracking the signing ceremony: 2 of 3 signed in the headline, each signer’s Sent → Viewed → Signed with times under Details ▾. A signed minor still missing a guardian signature, or signers gone quiet past your reminder mark, are flagged on the card even collapsed.
- SIGNERS (inside Details ▾) — a filter pill per state (not sent, awaiting, viewed, reminder sent, signed, declined, expired). Audit trail and All agreements sit beside them, and a COPIES row covers the send-a-copy emails every other document has.
- The document type bar — which wording this production is using, how many optional clauses are on it, and Edit template.
Templates, clauses and profiles
The wording lives in Settings → Agreements, not on the job, so you write it once and every production picks it up. Templates are grouped by the type they belong to. Change a template and every agreement still in draft regenerates instantly — but anyone who has already signed keeps the exact wording they agreed to. Their signed copy, and every copy regenerated afterwards, reproduces the text they actually saw, not the edited template. That holds for all three types.

- Agreement templates — name, description, title, header, body paragraphs, footer, signature wording, colour and logo. Duplicate any of them; a shipped one you edit stays edited, and Reset to the shipped wording puts it back. Templates you build or bring in are listed first, under YOURS; KitSlate's own sit below by type.
- Saved clauses — reusable paragraphs: AI Usage, Social Media, Exclusivity, Territory, Time Limited Licence, Credit Requirement, Music Rights, NDA, Usage Restrictions, No Further Payment. Build them into a template so they always print, or add one to a single agreement from Options ▾ → Optional clauses. Write your own too.
- Agreement profiles — one choice instead of four. Picking Podcast or Commercial on a production sets the template, the clauses and the reminder schedule together.
- Signing — KitSlate’s own signing engine is built in and needs nothing connected. There is no other signing provider; the agreement, the templates and the audit trail don’t change when a provider is switched.
- Defaults — Starting template (the one a new agreement opens on — or the menu, so every new agreement begins at the chooser), whether KitSlate's templates are shown or hidden in the lists to begin with, whether reminders are armed, and how long signing links live.
Templates and presets are wording, not letterhead. The preview in Settings leaves Company unfilled on purpose — the company, its address and the producer come from the production the agreement is created on, so one template serves every company you invoice as.
Starting a new agreement
+ New agreement on the Agreements tab opens the chooser. YOURS — the templates and presets you built or brought in — sits at the top; KitSlate's own templates are grouped by type underneath, and Start blank is last. Hide KitSlate's templates / Show KitSlate's templates folds the built-in groups away to a single line each; that switch is remembered on this device only, and the workspace-wide starting position lives in Defaults. Pick one and the agreement opens on the production, ready to fill in and send.

The visual editor
Edit template opens a block editor with the real document rendering live beside it. Each body paragraph is its own block with move and delete controls. Typing / or {{ anywhere in a paragraph opens the merge-field and clause menu inline.

The amber highlights are the fields that fill themselves. In the template preview, a merge field with nothing behind it yet — Company, Company Address, Production Name, Shoot Date — is marked in amber so you can see at a glance what the production will supply. On the agreement itself those same fields print with the real values, and anything still empty prints as its field name in square brackets rather than as a raw {{token}}.
Merge fields resolve per signer, which is what lets one template serve a whole cast: {{Production Name}}, {{Shoot Date}}, {{Location}}, {{Project Number}}, {{Company}}, {{Company Address}}, {{Producer}}, {{Producer Email}}, {{Talent Name}}, {{Talent Email}}, {{Talent Role}}, {{Guardian Name}}, {{Property Name}}, {{Property Address}}, {{Property Description}}, {{Today’s Date}}, plus any custom field you add per production under Options ▾ → Custom merge fields. A field with nothing behind it shows highlighted on screen and prints as [Field Name] — never as raw {{ }} placeholder text.
The editor’s AI assistant tab rewrites the body only: improve wording, shorten, simplify, more formal, more friendly, US English, UK English, or generate a fresh documentary / commercial / podcast / interview wording. Title, clauses, signature wording and the disclaimer are left alone, and one click undoes it. It writes clearer English — read every word before you send it.
Deal terms fill themselves
A studio-hire or production-services agreement asks for money and dates the production already knows. Under AGREEMENT DETAILS → Show all fields, the Deal terms group arrives pre-filled: Hire Fee is the approved quote's payable total and Deposit half of it; Balance Due is two days before the booking; Booking Dates come from the shoot date; Access Times are the call sheet's first and last call; Overtime Rate is your studio's hourly rate. Each filled value says where it came from — "Filled from the call sheet's first and last call — type over it if the deal differs." — and typing over it wins. Deal terms are typed once for the production; every agreement on it reads the same ones.

Who signs
⇄ Pull talent from call sheet reconciles rather than duplicating: it matches on name, fills blank roles and emails from the call sheet and your crew database, and tells you what it did. + Add also picks from cast, crew and clients directly.
Each row has a SIGNS AS menu — Talent, Authorized Property Representative, Signer, Guardian, Witness, Producer or Client. A new signer starts as whatever the document type expects, and you can change any row. Each signer carries their own status and their own link.
The Talent is a minor toggle reveals guardian name, email and relationship, and a signed minor with no guardian signature does not count as complete — in the agreement, in Production Health, or in the job’s progress. It appears on talent agreements only: a building manager does not need a parent to co-sign. An ADDITIONAL TERMS box prints into the body of this production’s agreement only, and merge fields work in it.
Getting it signed
✎ Send for signature is the main event. The recipient list is the signatures table — you cannot send to someone who is not on the document, and anyone you add in the send dialog lands on the table. Set the message, tick any other document to attach, choose how long the links live (7 / 14 / 30 / 90 days) and arm reminders.
Everyone gets their own private link. They open it on a phone, read the document in the page, sign with a finger, and it comes back onto the table with their signature, the time, their IP address, device and browser. The signing page names what they are signing and who they are signing as — a location release says location release, and the signer is asked for a title or position rather than a role. A countersigned PDF is emailed back to them automatically, and the exact text they signed is preserved with their signature, whether they signed on their phone or on your device. Nobody downloads anything to sign, and nobody needs an account.
- Sign here on any row signs on this device instead — draw it or type it — for someone standing next to you.
- Reminders fire after 3, 5, 7 or a custom number of days, and stop the moment somebody signs.
- A signer can decline, with a reason, and that comes back too.
- The row’s ⋯ menu covers resend, remind, copy link, void link, download their signed copy, email their copy again, their history, and clearing a signature.
- Send with… (under Actions ▾) puts the agreement in one email with the other things that person owes you — their details, the quote, the invoice — see sending several things in one email.
What the signer sees when they finish. The page turns into their receipt: a SENT card saying their signature is with you and that the countersigned copy will follow by email, the same offer to print or save a PDF that every KitSlate form makes once it is submitted, and beneath it the complete agreement as signed. If it came as part of a bundle, See what is left → takes them back to the rest. A copy is emailed to them at the same time.
Every event is recorded on the production and exports as CSV: created, edited, document type changed, sent, viewed, reminder sent, signed, declined, downloaded, delivered, completed, text snapshot recovered — each with a timestamp, and each signature with the IP address, device and browser that produced it. Talent releases, location releases and custom agreements all use the same record.
The moment a signer signs, their name, role, email and signature date become read-only on that row — they render as plain text instead of editable boxes, and the workspace refuses to change them even if something tries. The same applies to a parent or guardian's details once the guardian has signed. Everything else about the agreement stays editable.
An attempt to change one is recorded rather than silently ignored: the audit trail gets a refused entry naming the field, what the record says, and what the change would have made it. If a signed row is genuinely wrong, remove that signer and add them again — which is itself recorded — rather than editing the executed record.
Signatures collected before signed-text preservation existed may have no stored record of the exact wording that was signed. Where the original text can still be recovered from the signing record, KitSlate restores it automatically and the audit trail shows Text snapshot recovered. Where it cannot, the row is marked legacy — text not snapshotted, and any regenerated PDF says so honestly on the document: “Reconstructed from the current template — original signed text snapshot unavailable.” The signature, date, device and IP records are unaffected either way.
A production carries as many agreements as the job needs — a talent release for the cast and a location release for the venue on the same job, each its own document with its own signers, status and audit trail. The AGREEMENTS strip under the status card lists them; click one to work on it, + New agreement adds another, and archiving one keeps its signatures. Several agreements per production is the next step, and the signing engine is already built for it.
Every agreement, everywhere
All agreements opens a dashboard across every production: total signed, a filter pill per state, and one searchable table of every signer — by signer, email, role, production, company, status or date. Click any row to open the agreement it belongs to. On a phone the table becomes cards, so the signature status is always on screen.
Agreements also feed Production Health: unsigned agreements, a minor missing a guardian signature, a declined agreement, an expired signing link, a bounced email, an overdue reminder, an agreement never sent, and people on the call sheet with no agreement naming them at all.

Assigning a document
Give someone outside the workspace a scoped fill-in form. No account, no app, no seat.
On the Gear List, Quote, Invoice or Call Sheet, Actions ▾ → Add → ↗ Assign. The dialog leads with what the person actually gets — a private link with no login, work they can do on any device, results that land straight on this document, and progress tracked back here — then asks who. Search your crew and clients, or type an email address for someone in neither. Nothing is sent until you press Assign the <document>.
They get an email with Open the <document> → pointing at a one-off web form.
| Document | What the guest sees |
|---|---|
| Gear List | Your categories and items with tick boxes — "Tick everything this job needs, then submit." |
| Quote / Invoice | An editable line table (description, qty, days, day rate) with + Add a line. |
| Call Sheet | Key times, a crew table, a schedule table, shoot-plan cameras and notes. |
The same machinery is used away from documents, to ask a person to fill in their own crew record or client record — see Requests & approvals.
Back in the production, a HANDOFF row inside that document's STATUS card tracks it: "Handed off to <email> — waiting for them to fill it", then "Filled by <email> — their picks are on the list below", with Reassign / Assign again.
A returned form replaces what is on that document. Don't assign something you have already built by hand.
Other limits: you must be signed in (the person you assign it to does not — the dialog says so if you try), email sending must be configured in Settings → Integrations, there can be only one live assignment per document type per production, and the app only checks for returns while that production is open — so open it to pull a submission in.
What the person sees when they finish
Every form KitSlate sends out — gear list, quote, invoice, call sheet, agreement, a client's or crew member's own details — ends the same way. While the form is open there is no print button: the banner at the top names the form, who it is for, and what happens when they submit. Once they submit, the page becomes their receipt, stacked full width:
- A SENT card first — what went to you, with two short columns: What happens now and Your copy.
- If it came in a bundle, a Your other items panel with See what is left →, so they can get back to the rest without hunting for the email.
- Then the complete form as they sent it, every row, under a banner that now offers Print / Save PDF. Printing prints the receipt, not the page around it.
- A copy is emailed to them at the same moment, so the link can expire without them losing their record.

A link that has been cancelled, has expired, or was already used says so plainly on the same banner and offers nothing to fill in. Nothing sent before that moment is lost.
Sending several things in one email
One person often owes a production more than one thing — their details, a quote to approve, an agreement to sign, an invoice to pay. Actions ▾ → + Send with… on any document opens one dialog for all of them. Pick the person; each item you could include is a switch, and a greyed one says why it cannot go — already approved, not a signer on this production, already paid. Quick presets tick the usual combinations. One send is one person: someone else gets their own email and never sees anybody else's items.

The email carries one link per item and one link to their page: everything they were sent, with what is done and what is still to do, and an Open → on each. Every receipt they land on offers the way back to it.

Requests & approvals — asking people for their own details
On Clients and Crew, ✉ Ask client to fill in / ✉ Ask crew to fill in in the top bar, or ✉ Ask them on a selected person, sends a private link to a one-off form holding their own record. What comes back fills blanks only. If an answer disagrees with what you already hold, your version stays and theirs is parked for you to review.
The requests live where they are acted on, in one vocabulary: To do for what needs you (waiting, expired, an answer to review), the person's own record for the link itself (a small flag on their tile, and a REQUEST section on the record with Resend, Copy link and Cancel), and Activity for what happened. Cancelling revokes the link on the server — it stops working for the person it went to. A fresh request to the same address replaces the one still out.
Settings → How you work → Requests & approvals holds the three decisions: Approval — hold every answer for your approval before it touches a record (off by default: blanks fill straight in, disagreements park for review either way); Links expire after 7, 14, 30 or 90 days, applied to links sent from then on; and Offer a reminder after 3, 5, 7 or 14 days, which is when To do starts offering Resend instead of Copy link. Nothing is ever sent without you pressing Send.

Inventory / Equipment
Your fleet. This is the screen the rest of the app leans on hardest — day rates here become quote totals, and packing marks here become availability.

Three ways your gear is organised
| Structure | How it works |
|---|---|
| Categories | The top-level grouping (CAMERA, LENSES, GRIP…). Every item is in exactly one. Names are forced to uppercase. Deleting a category deletes its items. |
| Locations | Where a thing physically sits. Either manual ("Shelf B", "Van"), or created automatically when you tick Is this a case? on an item — that item then appears in every location list with a CASE tag. |
| Kits | Named bundles with one blended day rate. A kit stores copies of item names and serials, not live links — so editing an item later does not update the kit. |
Adding and editing an item
+ Add item, or the + on any category header to pre-select that category.

Beyond the obvious fields (model, serial numbers, location, date purchased, purchase cost, replacement cost, SKU, photo URL, notes), two things deserve attention:
The three day rates cascade
Rates — $/day, by where the gear is working has three boxes: In studio, Outside / on location and ShareGrid / public. Leaving one blank is deliberate — it falls back down the chain:
- A gear list at outside rates uses Outside, or falls back to In studio.
- A rental uses ShareGrid / public, then Outside, then In studio.
So you only need to fill in the ones that actually differ.
Links auto-fill
Paste a B&H or Amazon product URL into Links and the app tries to fetch the name, model and price. Paste a URL into ShareGrid listing and that alone is what publishes the item on your public page as kit for hire.
Multiples are separate rows. The CSV and receipt importers expand "qty: 3" into three rows for you.
The × on an item row deletes it immediately.
The row controls
| Control | What it does |
|---|---|
| Selection bar (left) | A thin bar, not a checkbox. Click to pick the item for a gear list. |
| ≈ | Market rate — opens an inline panel with the going day rate near you, the weekly price, and how your three tiers compare. Only when Rate Guide sharing is on. |
| ✎ | Edit. |
| ⇄ | Merge into another item — moves the receipt, SKU and price paid across, then deletes this one. It suggests likely duplicates ranked by serial, then SKU, then shared words. |
| × | Delete. |
| Status bar (right) | Click to cycle: in → out → faulty. |
Views, columns and search
- VIEW — Category / Location / Kits / Receipts. In Location and Kits views the location column becomes a read-only category label, so you cannot re-file gear from there.
- Columns ▾ — Serial, Rate, Cost and Replace $ each have three states, cycled by clicking: ✓ shown → ••• masked (values become dots — for screen-sharing) → – hidden.
- ⊞ / ⊟ — expand or collapse every section.
- Search gear… matches name, serial, model, location and category, and auto-expands everything while you type.
- Categories & Locations ▾ jumps to a category or location, and holds ⚙ Manage — rename, remove….
Selecting gear and bundling kits
Clicking selection bars raises a bottom bar — "N items selected", Clear, Bundle into Kit, Create Gear List → — plus a live GEAR LIST — BUILDING tray showing the running daily total.
Bundle into Kit (needs two or more) shows what is going in, then lets you tick crew and set their day rate to build an all-in package. The kit rate pre-fills with gear plus crew, and typing your own figure stops it auto-updating. Crew included in a kit land on the call sheet automatically, and the quote shows one all-in line with them marked "included".
× on a kit unbundles it: "The kit is deleted; your inventory items are not affected."
Getting your gear in — imports
Import / Export ▾ holds two ways in:
- Import equipment… — the one door for anything that lists gear. Drop a CSV, a PDF or a photo — an old spreadsheet, an insurance schedule, a rental-house list — or paste the list as text. KitSlate picks the reader itself: files it recognises (its own CSV export, the original Gear List spreadsheet, tabular PDFs) are read directly; anything the standard reader can't shape gets an explicit Read it with AI → offer, and photos go straight to that offer. Either way you land on the same review — tick the items you want, untick misreads, then Add N items to Inventory. Missing categories are created; new arrivals wear a NEW tag so you can see exactly what landed.
- Import receipts… — see below.
Inventory CSV import skips duplicates outright (matched on name + serial) — an existing item is never updated. Clients and Crew do the opposite: they fill in blanks on existing records. Don't assume one behaves like the other.
Importing data from the Mixel spreadsheet
If you came from Gear List for Video Professionals — the Google Sheet sold on Gumroad — your kit moves across as it is. In the sheet, open the Inventory tab, press UPDATE THIS LIST so every equipment tab has been pulled in, then File → Download → Comma-separated values (.csv). Import that one file here and every category comes with it — the importer recognises the sheet by its Serial Numbers: header and reads your category bands, names, serials, notes and prices without you mapping a single column.
The full walkthrough, with screenshots of both the sheet and the app, is at kitslate.app/mixel-spreadsheet-import.
The equipment-list CSV import is a Studio-and-up feature. Receipt import and your full encrypted backup are on every plan, free included.
Tidying names afterwards
If imported names nearly match the shared catalogue, you get "Tidy up N names for consistency" with tickboxes, Keep mine and Rename ticked →. It changes only the name — but it is what makes your gear line up with Rate Guide benchmarks.
Receipts
VIEW → Receipts lists imported receipts with a storage meter. Drop PDFs and each is reviewed one at a time: editable order number, date, buyer, subtotal, tax, total, and a Payboo saved −$ field (B&H's card refunds the sales tax, so it counts as saved, not spent).
Each line offers ⚠ Update: <existing item>, Add as new item, or Skip this line. The promise is explicit: "Update fills price paid, date, SKU and links the receipt — it won't rename or move your item."
When a vendor's layout isn't recognised the receipt is still logged, and a banner offers Read it with AI → — any vendor, a few seconds, check the lines before importing.
The original file itself: signed in to your own workspace, the PDF or photo is stored privately in your cloud workspace — the receipt row keeps only a small reference, so originals never eat your browser's storage budget. View original on the receipt row fetches it back on demand; the same button appears on imported invoices. Signed out or in the sandbox, small originals are kept in the browser as before. If a file ever can't reach cloud storage, KitSlate says so at import — it never quietly falls back to stuffing the file into the browser.
Receipts name things the way the till prints them — "SONY FX6 FULL FRAME CINEMA CAMERA BODY". Every item name on the review screen is a type-ahead: start typing and the shared catalogue offers its own spelling, so picking "Sony FX6" lines your gear up with everyone else's benchmarks. You do not have to — anything left as printed is still offered for tidying at the end of the import.

Clients

The page is a balanced two-pane layout: the list takes about half the width, the selected client takes the other half. Each list tile carries the company name, the primary contact, their email and phone, how many documents that client has and when you last shot for them.
The record itself opens under a header that stays put while you scroll it — company name, main contact, city, currency, and the three actions: New job → (starts a booking pre-filled with this client), ✎ Edit client, and a deliberately quiet Delete off to the right. Below that the record is grouped into cards: Overview, Contact, Address (with a map), Production defaults — camera settings, preferred kits and regular crew in one place — Activity, Past shooting information and Notes. Empty sections say "none set" rather than leaving a hole.
✉ Ask client to fill in in the top bar, or ✉ Ask them on the open record, emails the client a private link to their own record — address, contacts, billing details, the camera they shoot on — and what comes back fills the blanks. A small flag on the tile and a REQUEST section on the record show a request that is out; To do shows anything that needs you. See Requests & approvals.
On desktop the page itself does not scroll. The list and the open record each get their own scrollbar and fill the height under the toolbar, so you can reach the bottom of a record — Work history, Notes — without first scrolling the whole page to its end.
Under about 1100px the list goes full width and the selected client opens over it as a drawer with a ← Clients button. On a phone it fills the screen. There is never a pair of squeezed columns.

✎ Edit client opens as a large drawer rather than a tall thin modal. Fields sit in the same groups as the read-only record — Overview, Contact, Address, then camera settings, equipment and regular crew — and the footer with Cancel and Save stays visible however far you scroll. Every field is the one that was always there; nothing was renamed or removed.
What a client record does for you
- FILMING LOCATIONS is derived from past shoots — you don't type it. Those addresses are offered back next time you book them.
- REGULAR CREW are auto-added to this client's call sheets.
- CAMERA SETTINGS presets load automatically on their shoots. The first one added is the default.
- Quotes and invoices pull their name, address and contact from here.
In order: the preset you pick in the booking wizard, then the client's settings saved from their last job, then the client's default preset. A client's saved-from-last-shoot values beat their attached preset — there's a Clear button if that's not what you want.
Deleting a client can blank the contact details on an already-issued Quote or Invoice, even though the confirmation says "Existing gear lists keep their info". Print or export anything you need before deleting a client.
Importing clients

Import contacts — Xero / QuickBooks / Wave / any CSV… opens a staged assistant. Drop a file in and it works through four screens; nothing is written until the last one.
- Upload — drag and drop or browse. It reports the filename, size, detected encoding (including UTF-8 BOM and UTF-16), row and column counts, and copes with comma, semicolon and tab separators. Up to 8 MB and 20,000 rows.
- Detect — the format is worked out from the column headers, never the filename: Xero Contacts, QuickBooks customers, Wave customers, a KitSlate export, or Generic CSV. You get a confidence badge — High confidence, Likely or Needs review — and a Change picker to override it.
- Map — a table of every source column with two or three real example values, the KitSlate field it will land in, and where that mapping came from ("exact header", "known alias", "from values", "your saved mapping"). Change any of them, or send a column to Ignore, Add to Notes or Keep as source data. If two columns point at the same field you get told.
- Review — every row, with counts of new, existing matches, possible duplicates, rows needing review and invalid rows, each filterable. Correct the name, contact, email or phone inline. Then Import.
Header matching is tolerant: spacing, capitalisation, underscores, hyphens, a UTF-8 byte order mark, missing optional columns, extra columns KitSlate doesn't use and a different column order all pass. An absent optional column never fails the import.
Xero contact files
Xero contact exports and the Xero contact import template both work. ContactName becomes the client name, AccountNumber, FirstName, LastName, EmailAddress, PhoneNumber, MobileNumber, FaxNumber, Website and DefaultCurrency map straight across.
When a file carries both a street and a postal address you are asked which is the real one, before the preview: Prefer street, fall back to postal (the default), Use street address, Use postal address, or Street address, postal address into Notes. The two are never mashed together into one malformed field, and a second address that was left behind is flagged on the row.
Xero fields KitSlate has no home for — tax number, contact status, sales and purchases accounts, tracking categories, extra contact people — are listed under Additional source data on the mapping screen and kept on the client record as source data. You can send any of them to Notes, to a real field, or to Ignore instead.
When KitSlate can't work a column out
Known headers never need help. For a generic spreadsheet or an oddly-labelled column, Ask AI to map unclear columns appears. It sends only the unresolved column names and up to three sample values each — one request for the whole file, never one per contact — and every suggestion comes back for you to review before anything is imported. The AI can only ever choose from KitSlate's own field list; it never writes data and never fills in a missing name, email or address.
Once you have corrected a mapping by hand, Remember this mapping saves it against that exact set of headers, so the next file of the same shape arrives already mapped.
Duplicates
Before anything is written, each row is compared against your existing clients — on email, then account number, then company name plus phone, then contact name plus email or phone. A close-but-not-exact company name is only ever raised as a possible duplicate. Possible duplicates are never merged automatically. Per row you choose Skip, Create, Update empty fields only, Update mapped fields or Replace record — and the default is always the safest one, which fills blanks and overwrites nothing you have typed.
Afterwards
The final screen reports created, updated, merged, skipped and failed. Anything that failed can be downloaded as an error CSV with the original row, the reason and a suggested fix. Import history… in the same menu keeps the result of each job — date, who ran it, company, format, filename, row counts and the mapping used — plus your remembered mappings, each of which can be forgotten. The uploaded file itself is not kept.
Exporting to your accounting package
The OUT half of the menu has Export full KitSlate CSV plus presets for Xero, QuickBooks and Wave. Each one previews the first rows with the destination's own column headings and tells you plainly which KitSlate fields that package has no home for — Xero has no toll-free or notes field on a contact, for instance — before you download.
↑ ContentsCrew


Crew uses the same two-pane layout as Clients, and the same sizes: list on the left at roughly half the width, the selected person on the right. A list tile shows their avatar, name, pronouns, primary and secondary role, phone and email, their employment badge, and compact markers for W-9, DIET, CERT EXPIRED or NO CONTACT so you can see at a glance who is missing something.
The profile opens under a header that stays put — avatar, name, pronouns, roles, employment badge and those same markers, with ✎ Edit profile, ✉ Ask them and a quieter Delete set apart. Below it: Overview, Contact, Rates (with the going-rate comparison where the Rate Guide has one), Tax and paperwork, Licenses and certifications, Dietary requirements, Work history and Notes. Nothing was dropped in the move — a section with nothing in it now says "None recorded" in one line instead of taking up a screenful.
Editing works exactly as it does for clients: the same window, the same section order as the read-only profile, and Cancel / Save profile pinned to the bottom.
The fields that matter most
- Employment — Freelance / Casual / Full-time. Choosing full-time greys out every rate field, and their quote line reads "Full-time staff — no day rate on quotes".
- RATES — PRIMARY ROLE — from a list of 21, or + Custom role… — plus day rate, rate basis (10-hour day / 12-hour day / other) and OT multiplier, defaulting to 1.5.
- RATES — SECONDARY ROLE with its own day rate. This is how one person can be booked as DP on one job and Operator on another, at different money — you pick which when you add them to a call sheet.
- TAX AND PAPERWORK — tax ID type, employment type for tax, a Received W-9 toggle, and a drag-and-drop zone for W-9s, contracts and NDAs. Uploading a file with "W-9" in the name ticks the box for you.
- LICENSES & CERTIFICATIONS — type, name and expiry. Anything lapsing within 60 days shows amber; anything expired shows red.
- DIETARY REQUIREMENTS — tap-to-toggle pills from a 17-item list. It asks how someone eats as well as what they can't: vegetarian, vegan, halal, kosher and keto sit alongside the allergies, so a vegetarian no longer reads the heading and leaves it blank. These roll up onto every call sheet's catering summary.
If someone's ticket lapses before a shoot they are booked on, it appears under PRODUCTION HEALTH in that job's header. This is the closest thing KitSlate has to a crew-readiness check.
A brand-new profile shows "Save the profile first, then reopen it to attach documents". Files cap at 2 MB each.
KitSlate's conflict detection covers gear and studio rooms, not crew. Your signals for a person being in two places are the certification warnings and Home's "You're in N places today" line.
Let them fill in their own details
Rather than typing everyone's details yourself, you can email your crew a link and let them do it. It rides the same rails as handing off a document — a one-off web form, no account, no app, no seat.
✉ Ask crew to fill in in the top bar takes one email address per line and sends each person their own private link. On a selected person, ✉ Ask them does the same for just them, pre-filled with the address you already hold.
What they see is their own address-book entry in six blocks: who you are (name, pronouns, main and second role, both type-ahead against your 21 roles), how to reach you, where you are, your rate, how you eat as tap-to-toggle pills, and anything else. If you already have a record for them it comes pre-filled so they only correct what's wrong — except the rate, which is always asked fresh. They can leave anything blank, and the submit button stays locked until there is at least a name or an email.
Back on the Crew page an ADDRESS BOOK bar tracks it: "N waiting" while links are out, then "<name> filled it in — N blanks filled" as each one lands. Someone who wasn't in your database yet is added as a new freelance crew member. Open jumps to their profile, Clear puts the bar away, and their profile gains a CONFIRMED BY THEM line with the date.
Unlike a document handoff, what comes back fills blanks only. If someone answers something differently to what you already hold — a new phone number, a higher day rate, a changed dietary need — your record is left alone and their answer is parked behind Review N. That shows yours against theirs per field, with Use theirs, Use all of theirs and Keep mine. Nothing changes until you pick.
Clear asks before throwing away answers you haven't reviewed yet.
You must be signed in (they don't need to be), email sending must be configured in Settings → Integrations, and there is one live request per email address — a new one replaces it. Returns are pulled in every minute wherever you are in the app, and each request shows on To do, on the person's record and on Activity — see Requests & approvals. Old limit, kept for the record: returns used to arrive only while the Crew page is open — so open Crew to collect them. Tax paperwork, W-9s and certifications are not part of the form; those stay yours to enter.
Camera Settings
Reusable camera-menu snapshots that ride onto gear lists and call sheets, so the crew shoots the right thing.

Every ask for camera settings starts with the camera. A preset, a client's record, a production's camera block, step 2 of Create Production and the guest form a client fills in all open the same picker: Brand first, then the Camera body, and the setting tiles narrow to the values that camera actually offers, from its published specifications. Custom — fill your own keeps every setting KitSlate knows for a body it does not, and Request a camera… asks for one to be added. Every tile still takes + Custom… for a value that is not listed.

+ New preset opens the editor inline. There are tiles for 18 standard settings — resolution, frequency, PAL/NTSC, shooting mode, picture profile, LUT, base ISO, gain/EI, white balance, ND, shutter, focus mode, SteadyShot, timecode, audio channels, proxy, scan mode and codec — each a picker with a + Custom… option. + Add setting covers anything not listed.
Auto-name builds a name from the main values, giving you something like HD / 29.97P / NTSC / CINE EI. Leave the name blank and it applies that automatically on save.
Attach to clients makes a preset load automatically on that client's shoots. A preset can belong to any number of clients, and detaching here also removes it from that client.
Settings are snapshotted when the job is created. Editing the preset afterwards does not change jobs already built from it — and hand-editing a field on a sheet detaches it from its preset.
Remove on a preset card deletes it immediately. Duplicate first if you're experimenting.
At the foot of the page, Custom values keeps every value you have ever typed into a settings field, as removable chips, so it reappears in the picker next time.
↑ ContentsExternal Rentals
A ledger of your own gear going out to someone else — no job, no gear list, no call sheet attached.

- Renter — who has it. Required.
- Platform — ShareGrid, KitSplit, Direct or Other.
- Start date, Days (in half-day steps) and Payout $.
- Pick equipment… — each row shows the serial, whether it's already out, whether it's listed externally, and its external day rate. Close with Done — N items →.
- A hint appears — "suggested payout $X", being each item's public rate × days. Optionally open More — status, fees, tax, deposit to match your ShareGrid statement line for line.
- Log rental →.
Logging flips every picked item to out. Return on the ledger row puts them back in storage. Blank fields are filled in for you on save: end date from start + days, subtotal from daily × days, payout from subtotal − service fee.
Rentals do not create date conflicts. The double-booking warnings in + Create Production read other shoots only. The same item can be logged out to two renters with no warning at all. Your only signals are the red "out" status, the equipment counts in the status panel, and "already out" in the picker.
Delete the row before returning and the gear stays marked out forever. Hit Return first — the confirmation even admits "(Doesn't change item status.)"
Rentals carry no company, so the company filter in Reports never touches rental income.
Import rentals CSV… auto-detects a ShareGrid rental-history export, de-duplicates on rental ID, files rows as already returned, and matches items to your inventory by name.
↑ ContentsReports
Twelve reports in three groups. Every number is clickable and drills into whatever produced it.

| Group | Reports |
|---|---|
| Money | Business overview · Income tracker · Expense tracker · Profit & loss by job · Outstanding invoices · Client revenue |
| Equipment | Earnings & payback · Gear status board · Idle gear · Insurance & replacement |
| Crew | Crew bookings & spend · Roster & catering |
Business overview
Shoots booked, days booked, total income, equipment revenue, external rental income, crew spend, misc spend, expenses out of pocket vs billed to client, and Cleared (income − crew − misc − expenses). Then the fleet row: items, fleet cost at RRP, fleet day-rate capacity (the sum of every in-studio day rate), in storage, out, faulty, and fleet paid off as revenue ÷ cost.
INCOME MIX breaks down where the money actually comes from — the studio, equipment, you working a role (split per role), and misc — read from each quote's sections.
Job money — income, equipment revenue, crew and misc spend, expenses, rental income — is reported in the billing currency of the company that earned it. Pick a single company in the filter and every figure reads in that company's currency.
If your companies bill in different currencies, KitSlate will not add them together. All companies shows one band per currency, each summing only its own, and says so — there is no exchange rate anywhere in KitSlate and a combined total would be a number that means nothing.
Equipment figures are different: fleet cost, replacement value and used-gear sales belong to your inventory, not to any one company, and nothing ever recorded what currency you bought in. Those stay in the symbol from Settings → Accounting → Country & market. When that differs from the company's billing currency the page says which is which.
Income uses each shoot's quote where one exists, and falls back to day rates × days where it doesn't. So building quotes makes these numbers real.
Income tracker

The page's Import / Export ▾ menu carries one way in — Import invoices — PDF or accounting CSV… — and two ways out, Export income CSV and Export PDF — print this report. There is no separate Wave button and no separate QuickBooks button: the importer looks at what you dropped and routes it to the reader that understands that shape. You say what you have; KitSlate works out how to read it. The exports it knows: Wave Settings → Data Export, QuickBooks Reports → Invoice List, and QuickBooks Reports → Sales by Product/Service Detail — plus an invoice PDF, which it reads straight off the document. KitSlate has no connection to Wave, QuickBooks or Xero — nothing is fetched from them and nothing is sent to them; you move the file. Every import shows a review screen first, and nothing is written to your workspace until you press Import on it — cancel and not a row lands.
Which review you get depends on what the file holds, because the two shapes need different decisions from you. An invoice list (Wave's export, QuickBooks' Invoice List) gets a per-invoice review that names, for each row, its status and due date, whether it is new or an update to something you imported before, and which production it will attach to and why — "attaches to ‘Studio Interview’ — matched by client name", or "no production matched — arrives unlinked". A line-item export or an invoice PDF gets the line-by-line review instead, where you tick the individual equipment lines and set what kind of income each one is. Both end the same way: Cancel — bring nothing in or Import selected →.
Imported invoices land on the Invoices page tagged IMPORTED and read-only — KitSlate did not issue them, so it cannot edit or send them. On this page each row gets a — link to job — picker, and once linked the app compares it to that job's quote: "quote $X ✓ matches" or "— differs". A row whose number equals the accounting reference written on a job shows a MATCHED badge. This page is the one place that picker lives, which is why an unlinked imported invoice points you here from its own detail page.
Importing an invoice you raised somewhere else
An invoice raised in another system can be brought in as a PDF or a CSV, and you never have to say which system printed it. The same importer opens from six places and behaves identically in all of them:
- The Invoices page → Import invoice…, beside Create invoice.
- Create Production → IMPORTS & INTEGRATIONS → Import Invoice — start a job from an invoice you already have.
- New document → Import Invoice.
- A job's Invoice tab → INVOICED SOMEWHERE ELSE → Import invoice….
- The invoice Actions menu.
- Settings → Integrations → Data in & out.
Opened from a job, it knows which job — it checks whether the file is the same invoice and asks before linking them. Opened from anywhere else it inherits nothing, and finds or creates the production itself. Importing the same document twice updates the record that is already there; it never makes a second one.
What it keeps is what the document says: invoice number, customer, invoice date, payment due, currency, subtotal, discounts and credits, total, amount due, every line's description, quantity, rate and amount, a PO or reference where the invoice carries one, and the original PDF itself — held on the record, viewable and downloadable. The total is the total printed on the invoice, not the lines added up: an invoice with a $4,232 subtotal and a $1,000 discount imports as $3,232, and the discount is listed in the review beside the lines so you can see it going in.
If the document names its own maker — most do, in the footer — the record says so. If it does not, it says an imported document and means it. A layout that resembles a product is not evidence of that product, and the import works exactly the same either way.
Every line is tagged EQUIPMENT, STUDIO, CREW or OTHER, and you can click any tag to change it — it is remembered for next time. Transport, wire and card fees, discounts, rounding and labour are never offered as equipment, and nothing reaches your inventory unless you tick it.
Three different answers, because they are three different problems. "There is no text in that PDF" means the page is a picture — a scan or a photo — and there are no words in it to read. "That PDF read, but not as an invoice" means the words came off the page fine but no invoice number, total or priced line could be found among them, and KitSlate will not guess at figures; exporting the same invoice as a CSV imports cleanly. Anything that is neither a PDF nor a CSV is refused before it is opened. In the first two cases, a small file also gets an explicit Read it with AI → offer — AI is never run without you asking, and its reading lands in the same review as everything else.
The equipment reports
- Earnings & payback — per item: times out, days out, cost, rented income, profit, paid off. Only items that have actually been on a booking appear.
- Gear status board — chips for Out, Faulty, Packed in cases, In cases & out, In storage and External rentals, plus "External capacity: $X/day if it all rents". The equipment rows in the status panel jump straight here with the filter pre-set.
- Idle gear — priced but never booked. Capacity sitting still.
- Insurance & replacement — per category, with replacement value falling back to purchase cost. Print this one for your insurer.
"RENTED INCOME" on Earnings & payback is internal booking revenue — day rate × shoot days on your own jobs. It is not the External Rentals ledger, which appears only as its own KPI tile. They measure different things.
Roster & catering is deliberately not company-filtered — it reads your whole crew database for employment mix, dietary needs, roles covered and W-9 status.
Only Income and Expenses have their own Export PDF. Everywhere else, use ⌘P — the tables are print-styled and the action columns hide themselves.
↑ ContentsProfile & enquiries
Your "hire me / rent my gear" page, at kitslate.app/profile/<your handle>.
Plenty of people run KitSlate purely as internal software — jobs, gear, call sheets, quotes, invoices — and never publish a thing. The switch at the top of the tab is off until you turn it on, and with it off nothing about you is public. Nothing else in the app depends on it.
The switch works in both directions, and it hides rather than unpublishes. Turn it off on a page that is already up and the page stops being reachable straight away — no need to publish again — but your handle stays reserved, and the bio, kit and pictures all stay exactly where they were. Turn it back on and the same page returns. It is a curtain, not a delete.
A personal page is free, on every plan including the free one. Leading with a company instead — your studio taking the headline, its own address at /company/<handle>, and being described to search engines as a local business rather than as a person — is part of Studio and up. The picker shows which is which, and your personal page keeps working either way.
You get two names. Your handle is your own page, at kitslate.app/profile/<handle>. Company handle is the studio's, at kitslate.app/company/<handle>. They are separate namespaces, so the two cannot collide. Leave the company one blank and the company page borrows your personal handle — which names the wrong thing, and the tab says so.
The tab lists both addresses at once. The one that is actually published carries a LIVE badge; one that would change the next time you publish is marked ON PUBLISH. Neither badge is guesswork — LIVE is read from the page that genuinely went up, not from what you have currently selected.
Share either address — both always work. Whichever one somebody has, it lands on your page: the one that is not current redirects to the one that is. That holds for every address the page has ever had, so a handle you have since moved away from still resolves rather than 404ing.
The very top level — kitslate.app/market, /crew, /pricing — is KitSlate's own, and member pages never sit there. Handles are lower case: /profile/Stephen sends you to /profile/stephen.
It used to be a side effect: picking Your company changed how the page looked and silently moved its web address, so every card, bio and email signature pointing at the old one started redirecting. Changing the lead now changes only what the page looks like. A published page stays at the address it went up on.
To actually move it, use the button under the two addresses — Move it to kitslate.app/… — which asks first, tells you the old address keeps working, and makes the move when you next hit Publish page. A page that has never been published has no address to protect, so it simply follows whatever leads.
Before you publish, both handle fields are editable — pick carefully, because publishing fixes them. There is no link in the world to break beforehand, which is why the lock waits until then rather than snapping shut on your first keystroke.
After that they are read-only, on every machine you sign in from. If you published a typo, the locked field carries the way out: Ask us to change it opens the report form with the request and your current handle already written in, and it lands in the same place a bug report does. When it is changed, the old handle is retired rather than deleted — it keeps resolving for good, so anything already shared still arrives.

Find it as Profile in the sidebar, beside the Market — it's the face buyers, clients and crew see. (It's the same screen as Settings → You → Your public page; the sidebar entry is just a shortcut.) Edit what you want, then press Publish page — nothing reaches the public page until you do. The one exception is the Live/Off switch at the top, which acts immediately.
The tab runs in the order you'd set things up: Profile (the live switch, both handles, both addresses, your link preview), What leads your page, The person, A second person, Your companies — logos and pictures — What you offer, The contact card, then Showreel. What you control:
- What leads your page — you, or your company? Whichever you pick is the primary: it takes the headline, the main picture and the page title Google shows. It no longer decides the web address — see above; on a page you have already published, the address stays where it is until you move it on purpose. The other becomes secondary and appears small underneath — your companies as a WORKS THROUGH row on a personal page, or a RUN BY line with your name and face on a company one. A switch beneath hides the secondary entirely, so you can have a page that is only you, or only the company. Your company stays greyed out until you tick is a studio on one of your companies.
- What you are — the three chips on your card. STUDIO (somewhere people can book), PRODUCTION COMPANY (an outfit people can commission) and FREELANCE (somebody people can hire). They sit on your card in Find crew, where people filter by them, and at the top of your public page. Any mix is right — a studio that also takes production work and puts its owner up for hire is all three and should say so; they are three switches, not a choice of one.
They are worked out for you: a company ticked is a studio lights STUDIO, any other company lights PRODUCTION COMPANY, and FREELANCE depends on whether a person actually appears on the page — so a company-led page with the RUN BY line switched off doesn't claim to be a freelancer, because there is nobody on it to hire. Disagree with any of it and flip the switch; your answer sticks from then on. Pages published before the switches keep exactly the labels they went up with until you publish again.
- A second person — for a couple or a partnership. Add their name and the page carries both portraits, both names and both sets of pronouns, with your roles and theirs shown together and no repeats. Leave it empty and nothing about the page changes.
- The person — name, pronouns, photo, personal bio, Vimeo, LinkedIn, Instagram. Your roles used to live here; they now sit in What you offer alongside your services, because the two together are what the WHAT I DO strip is built from.
- What you offer — your roles, your services and how long you have been going. Roles and services together are the WHAT I DO chips, so emptying this block empties that strip; previously the roles sat under The person and clearing the services here left the chips still showing. On a company-led page the chips are the services alone and your roles move to the RUN BY line. Services are also the words Find crew matches on, so pick from the list wherever one fits.
- The business — location, contact email, company site, in business since, portfolio site, booking site, services.
- Town or city — separate from Location on purpose. Location is the address printed on your contact card and searched by the map; Town or city is the one Google and a pasted link use, so your page reads "Founder in New York, NY" rather than reciting a street number. Leave it blank and your studio address supplies it.
- Your companies — the logo and the picture for each company, together in one place. Note what is not here: a company's name, its website and its one-line blurb — the things that actually fill its card on your page — live on the Companies tab, and that is also where you add, rename and delete one. The two link fields in this block are your own, not a company's: Your website is the Web link beside your name, and A second link feeds the badges under it (and, if it matches none of your companies, gets a card of its own). They were labelled "Company site 1" and "Company site 2", which sent people looking for a company's website in the wrong place. One wide photo per company: drop a JPEG straight on the tile and it is downscaled and compressed on the way in so it fits the published page. On a company-led page that photo is the big picture at the top; with no photo it falls back to the logo, and with neither, to initials.
- Showreel — up to six Vimeo or YouTube links, mixed freely. Unlisted Vimeo links work — paste the whole thing including the private hash. Each field confirms what it recognised.
- Your link preview — the card someone sees when your page is pasted into Messages, Slack or LinkedIn. KitSlate draws it for you on every publish, from your name, role, city, first three services and your tagline, with your photo if you have one and a text-only version if you don't. The thumbnail on this tab is the real thing; Rebuild it redraws it without touching anything else. Messages and Slack cache previews per link, so add ?v=2 when testing or you will keep seeing the old one.
An item appears as available to hire when — and only when — you paste a URL into its ShareGrid listing field. It shows at the item's public rate, or "Rate on request" if you haven't set one. (Some in-app copy mentions ticking "Rent this out"; there is no such tick.)
Leading with the studio changes what the page claims to be, not only how it looks. It is described to search engines as a local business rather than a person — which is the description that can win a map or "near me" result, and carries your address and the services you offer. Leading with yourself describes a person, with your job titles and the companies you work through. Neither is better; they just answer different searches.
One knock-on worth knowing: the switch that hides the secondary reads Show the secondary, and on a company-led page the secondary is the RUN BY line with your name and photo. Switch it off and the studio page drops your personal Vimeo, LinkedIn and Instagram links too. The page is saying it is the outfit, so linking your personal accounts from it would put back exactly what the switch removed.
What a visitor sees
Hero and avatar, name and pronouns, location and member-since, whichever of the STUDIO, PRODUCTION COMPANY and FREELANCE badges you have switched on, your links, bio, a WHAT I DO chip list, a contact card with a map, the showreel grid, FOR SALE — N ITEMS (live listings, updating themselves, headed with a count of what is currently active), KIT FOR HIRE with a Request → per row, THE COMPANIES, then the GET IN TOUCH form.
An enquiry arrives on Activity as an ENQUIRY card with their name, email and message — the one thing on that page you can act on, which is why it renders as a full card rather than a one-line record. Reply from there and it sends through KitSlate with your company footer.
Bio, roles and kit-for-hire are a snapshot — re-publish after you edit them. For-sale listings are the exception and update themselves.
The Live/Off switch is the exception in the other direction: it acts the moment you click it, without publishing, and it works both ways. Off takes the page out of view straight away and keeps your handle, your text and your pictures exactly as they were; on puts the same page back at the same address.
If you fill in Contact email, it prints on the public page. The "email is never shown" promise applies to the enquiry form, not to that field.
The whole published page has to fit one database record, and pictures are the bulk of it. If it doesn't fit, KitSlate publishes everything else and leaves the largest picture out rather than failing — it tells you which one went. Re-upload a smaller shot to get it back on.
There is no client self-booking
Worth being clear about: a client on your page either taps the button at the top of your contact card — a link to whatever external booking site you configured — or sends the enquiry form. You reply, then raise the job yourself with + Create Production. That button reads Book the studio → on a company-led page and Get in touch → on a personal one, because a studio gets booked and a freelancer gets contacted; That button says on the contact card overrides both with your own wording, and an empty Booking or contact link hides the button entirely.
The confirmation page some people mistake for client booking is the call sheet confirmation link that crew receive by email: "See you on set?" → ✓ Confirm — I'll be there. Opening the link only reads status, so a link scanner can't confirm anyone by accident.
Two other public pages exist that you appear on automatically: the crew directory (every published profile, searchable by role, kit and city, and filtered by Studios / Production companies / Freelancers) and the used-gear market.
↑ ContentsRate Guide
What the industry actually charges — crew day rates, equipment rentals, all-in operator rates, studio rates, and what equipment is worth to buy and sell.

Give to get — the opt-in
The whole guide is gated behind sharing. Opted out, you see a LOCKED badge and two buttons: Turn sharing on and What gets shared?
Opted in, the page carries a short status card — shared rates, your community access level, and how many of the five categories you share. The individual category switches are not on the page; they live behind Manage sharing, which spells out exactly what each one sends. Turn a category off and that tab shows SHARE TO SEE.

Only the guided contribution flow uploads anything. Nothing about your inventory, crew or rate cards is silently harvested. The one upload path is Contribute rates → Share N rates →, and the step before that shows you the finished row in plain words before it sends.
A shared row contains: the kind of rate, the item or role name, the rate, the unit, the work type, and your city and country. It carries no submitter identity — never your name, company, clients or studio name. The pool table has no column that could hold one.
In-studio rates are not benchmarked. They are labelled “internal rate — not benchmarked” and are not included in the shared pool. Only your on-location and public/ShareGrid tiers are ever compared.
Equipment purchase and sale prices you add post as soon as you save them, and are shown only as an anonymous median.
Reading a row
Every row leads with a source badge saying what kind of figure it is, then the number. The badge vocabulary is fixed and used everywhere in the guide:
| Badge | What it means |
|---|---|
| Community median | Real pool data. Only appears once five or more members have shared that exact item in that market. |
| Researched benchmark | A hand-checked range with citations. Not a member submission. |
| Union reference | Anchored on a published union or guild rate card. |
| Public rental listing | Anchored on public listings — ShareGrid, Adorama, Peerspace and similar. |
| Retail reference | A researched list price for buying new. |
| Current asking price | What used units are listed at right now. Not what they sold for. |
| Verified sold price | A completed sale from a data provider. No provider is connected yet, so this never appears. |
| Community purchase / sale price | What members report paying, or what they report selling for — kept apart. |
| Insufficient data | Not enough observations to say anything. KitSlate leaves it blank rather than guessing. |
Under the badge sits the headline number, and it is named for what it is — Community median when the pool cleared five contributors, Benchmark midpoint when it did not. The two are never both called "common". Below that: the low-to-high band with a typical marker, the day length and overtime assumptions, how many contributors are behind it, and a Sources: line naming the real rate cards and listings it was checked against. Details and sources → opens the full breakdown, every citation with its URL, the methodology, and a Report a problem button.
If you have your own comparable figure, it appears as a marker on the band plus a percentage against the typical rate. It is only shown when you actually have one — there is no "yours — none yet" noise on every row.
There is deliberately no fake sample size anywhere.
Finding things
Search the Rate Guide at the top searches everything at once — roles, rental gear, operator packages, studios and the equipment catalogue — and groups the results by category. It understands the way people actually type: dp finds Director of Photography, 1st ac finds the camera assistant, fx6 and 600d find their gear, plurals work, and a typo like gaffar still lands on Gaffer. Clicking a result opens the right tab and highlights the row, keeping your market and work-type filters. The equipment catalogue has its own separate search inside Equipment Value, clearly labelled so you know which one you are using.
Everything you are browsing is set in one filter bar: Market (country plus an optional city), Work type, and Currency, with Reset filters when you have wandered. The flag shortcuts are still there as a quick way to change country.
The five tabs
| Tab | What's in it |
|---|---|
| Crew Rates | 20 roles, Director down to PA, with day lengths, overtime notes (1.5× after 10h, 2× after 12h) and kit-fee flags. |
| Equipment Rental | Rental rates with Rental period (per day / per week / weekend) and Rental context (studio rental / location rental / public marketplace). |
| Operator + Kit | Six all-in "person plus their gear" rates — ENG shooter, corporate one-man-band, doc DP, live op, photographer, drone op. |
| Studios | Hourly and daily rates with minimum-booking notes and a derived per-1,000-sq-ft figure. |
| Equipment Value | What gear costs to buy and what it is worth to sell — see below. |
Members only ever contribute day rates. Switch Rental period to per week or weekend and the row picks up an Estimated from daily rate badge — a week is 3× the day (keep 7 days), a weekend bills as one shoot day. Public ShareGrid and Adorama listings carry their own weekly terms.
Equipment Value

Each item is split into slots that are never allowed to borrow from one another:
- New retail — a researched list price. Never counted as community data.
- Used asking — what used units are currently listed at on the Market, with how many are for sale.
- Verified sold — reads Unavailable. There is no completed-sale provider connected, and asking prices are never substituted for sold ones.
- Community purchases and Community sales — what members paid, and what they got, kept as two separate figures.
- Estimated resale — only where there is real second-hand evidence. If there isn't, it says Not enough data to estimate rather than inventing a depreciation curve.
The tab opens on items that actually have pricing data. Items with none are hidden behind Show items without pricing data, or appear if you search for them directly, own one, or someone has an open price request against them. Filter chips across the top narrow it to New retail, Used asking, Sold prices, Community purchases, Community sales or My gear value.
Add a price asks whether you bought or sold it and what condition it was in — that is what keeps the two community figures apart. If you are still selling something, that is a listing rather than a price: put it on the Market and it shows up as an asking price. Request a price posts to the community board; replies arrive on your Activity page without exposing your email.
My Gear Value
The My gear value filter values your own inventory against the same data. It shows how many items could be valued, an estimated low, midpoint and high for the fleet, and how many items had nothing to go on.
Each item carries a condition selector — like new, excellent, good, fair, heavily used, damaged or parts. Condition places the item inside the range the market actually showed, and never above it: a like-new body cannot be valued higher than the highest real figure on record.
My Gear Value reads your purchase price and replacement cost but never writes to them. Your insurance and replacement figures are yours; the condition you set here is stored separately and changes nothing in Inventory or in the Insurance & replacement report.
Valuation matches on item name. Picking a name from the CATALOGUE type-ahead when you add gear is what lets the Rate Guide find it. An item that reads "not matched to a catalogue item" needs renaming to a known type (for example "Sony FX6") before it can be valued.
Wherever you type a piece of equipment — the item editor, an import's review screen, a market listing, a rate contribution — if nothing matches, the type-ahead offers + Ask KitSlate to add "…" to the catalogue. That files a request with KitSlate, who check it and add it properly; you'll see it appear in the type-ahead once it's in. Your gear list, listing or rate still saves exactly as you typed it in the meantime — nothing waits on the request. Asking twice for the same thing is harmless: the second ask joins the first rather than making a duplicate.
Contributing
There is one Contribute rates button, top right. It asks what you want to share — crew rate, equipment rental rate, operator + kit rate, studio rate, or an equipment purchase or sale price — then shows only the fields for that choice.
For rate contributions you set the production type and your city, then build as many lines as you like with Add. A Person with gear toggle files a crew rate into the operator + kit pool instead, and Add my studio rate card pulls your hourly / half / full / buyout figures from Settings.
Before anything sends, Review what gets shared → lists the finished rows in plain words and, beneath them, what will not travel. Afterwards you are told plainly that a community figure needs five members on the same item before it appears — your submission is counted while it waits, not lost.
Pick Type your own… and, from the second character, the shared catalogue suggests matching names beneath the box — "fx" offers the FX6, FX9 and FX3; "alexa" and "600" find theirs too. Picking one is the surest match, because it fills in the catalogue's exact spelling.
If you'd rather just type it out, KitSlate still tries to match what you typed against the catalogue by name. Real gear names rarely line up exactly — "Sony PXW-FS7M2 XDCAM Super 35 Camera System" is the same camera as the catalogue's "Sony PXW-FS7 II" but shares almost none of its wording — so when that plain match misses, the name alone is sent to AI to decide whether it denotes a catalogue product.
Only a confident answer is accepted, and the row then reads → matches <name>. Anything less stays new — pending review, with the AI's reading shown beside it as a suggestion only. That caution is deliberate: a wrong match would quietly merge two different products' rates into one benchmark.
This step runs for equipment only, needs you signed in, and never runs in the sandbox. If it can't run, your typed name still submits — just unmatched.
Your first switch-off of any given category is a free try. After that, rejoining that category is locked for 7 days — ×4 if you have left it twice or more, halved if you are a Top contributor (15+ shared rates). Benchmarks hide immediately when you leave.
If you only want the badges to go away, use View only on the Inventory or Crew toolbar, or turn off Show the "where you fall" scale — neither costs you access.
The country you pick in the filter bar (and under Settings → Accounting → Country & market) sets your Rate Guide market and the currency symbol on figures the workspace holds — equipment cost, replacement value, used-gear sales and your own rate card. It does not convert numbers you have already typed, and it is not what your invoices are issued in: each company confirms its own billing currency under Money → Getting paid, and quotes and invoices follow that. Changing Market changes what you are looking at, not your home market — while roaming you get "≈ home" conversions marked as indicative.
The Market
Free peer-to-peer used gear between members. Listings cost nothing and KitSlate never touches the money.

KitSlate never handles the money. You agree the deal and settle payment between yourselves. Check gear in person before paying, and meet somewhere sensible. There is no escrow, no buyer protection and no dispute process.
How buyers browse it
The public page at kitslate.app/market shows the same listings to anyone, signed in or not — the gear sits at the top, and the explainers are below it. Buyers narrow it with the search box (gear name, brand or city), the category chips, and an ordering row: Newest, Price low, Price high. Every tile is the same height; an older listing with no photo shows a stand-in naming the brand rather than the gear, because a picture in that slot would read as a picture of the item. New listings all require a photo. On a phone the grid runs two cards to a row.
Opening a card gives a quick view; Esc or the browser's Back button closes it. Share copies that listing's own address — every listing has a real page at /market/<id> that search engines can index.
Listing something
+ List gear for sale:
- Bringing over your own Craigslist post — paste the link into the field at the top of the form and press Import →. KitSlate fetches that page, reads it, and brings the photos across at full size (Craigslist keeps a 1200×900 beside the 600×450 it shows). They go through the same watermark and crop as an upload. Craigslist links only — anything else is refused, because an endpoint that fetches whatever URL it's handed is a security hole. Facebook isn't fetched at all: it refuses ordinary browser requests, so screenshot it instead.
An imported listing carries a CROSS-POSTED chip and a banner naming where it came from — Imported from Craigslist, or Facebook Marketplace, or wherever — with a View original listing → button underneath that opens the original in a new tab. The address itself is kept on the listing but never printed: a marketplace URL is a wall of characters and it told a reader nothing the button doesn't. A listing brought over by screenshot names its site but has no button, because a screenshot carries no link. That chip is grey, not green — it's information, not a KitSlate endorsement. The banner says what's actually been checked and no more: KitSlate can confirm the photos appear on that other post, but not that the account there belongs to the seller, and it says so out loud. The "these photos match that live listing — KitSlate checked" line only appears once the reverse-image check has actually run and found the match; until then it stays off. - Already listed somewhere? — the form opens in three parts: this import box, then The listing, then Photos & proof, so it's clear what happens in what order. Everything to do with bringing a listing over is in the one box at the top — the Craigslist link field and the big paste area together. Two ways in: screenshot the listing page and press ⌘V in the box (or drag the file in, or use + Screenshot…), or select the listing text and paste that. The screenshot route is usually easier — Facebook's listing text is awkward to select in one go. Fill the form from this → sends it to AI, which sorts it into the fields below. A screengrab is shrunk in your browser before it leaves, read once, and never stored — and it is not a listing photo; the reader ignores the browser chrome, seller card and thumbnails around the listing, and judges condition only from what the page prints, never from how the gear looks. KitSlate never visits the other site — you paste what you can already see, so this stays clear of scraping and of other marketplaces' terms. It never overwrites something you already typed, phone numbers and email addresses are stripped out of the description (buyers message through KitSlate), and the seller name always stays yours. If the paste isn't a piece of gear for sale it fills in nothing rather than guessing. Photos are the one thing it can't do — add those yourself.
It reads each site on its own terms rather than expecting one layout: Craigslist glues the price and neighbourhood onto the title, so both get cut; where a listing quotes two prices ("Retail $1,849.79. Selling for $1,400") it takes the one being asked; and a bare neighbourhood is turned into the city a buyer would actually search. Condition is the one to watch — Craigslist listings often don't state one, and when that happens the form says so and leaves Good sitting at its default. Set it yourself, or you've made a claim about the gear the listing never made. - What is it? — with catalogue type-ahead. Matching is optional, but it is what puts your listing on the Buy-prices page. Press Enter on a part code and AI resolves the full name.
- Asking price — the placeholder suggests the used median, or roughly 62% of new.
- Condition — Like new / Good / Well used / For parts.
- Category — the ten filter buttons buyers browse the market by. It fills itself in from the catalogue match, or failing that from the name, and says so underneath; tap another to overrule it. A category is required — a listing with no category would sit under Other, where the gear is effectively unfindable.
- Brand — optional — filled from the catalogue when it recognises the gear, otherwise type it. It is searched alongside the name.
- Details — what's included, hours, marks, box.
- City — prefilled from your studio address.
- Photos — up to 8. The first is the cover; drag a photo onto another to drop it into that place, or use ‹ › (which is what you need on a phone — touch screens don't do drag-and-drop). Dropping image files onto the box still adds them, as before. AI fill from photo reads your first shot and suggests the name, description and price — always check it. Images are downscaled and watermarked.
- Prove it — optional — upload the purchase receipt as a PDF. AI checks the product and buyer name and you get a VERIFIED BY RECEIPT tag. Buyers only ever see the tag, never the receipt.
Then List it →. You need a name, a price above zero, your first name set, a category, and at least one photo — photo-less listings aren't allowed.
Sell this → on any inventory item fills the listing from what the shelf already knows, so you retype nothing: the name (snapped to the catalogue by model number when the name alone missed), the model, SKU and purchase date into Details, the item's photo, and a Category read off the shelf it sits on (a catalogue match overrules that, and you can overrule both). It also attaches provenance the app can vouch for — how long it has been in your inventory, how many jobs it has done, how often it was rented out — shown to buyers as TRACKED IN KITSLATE.
The receipt comes across too. If a receipt is already filed against that item, it goes through the same AI check as a manual upload without you uploading anything, and the provenance line upgrades from "purchase receipt on file" to verified with the original receipt — plus sold by the original owner when the buyer name on it matches yours. Receipts whose PDF was too large to keep still verify from their saved text copy.
Two things it deliberately will not do: your Notes and serial numbers never go into a public listing, and the carried photo is flagged — if it is a stock product shot, replace it with the actual unit. A stock image cannot earn the PHOTOS CHECKED badge, and buyers expect to see the real thing. Buyers only ever see your first name; your email address is never displayed.
Messaging, and marking things sold
Message the seller → needs a free account — pressed while signed out, it offers one, and once you are in you land back on the same listing. Threads live in a MARKET MESSAGES panel at the top of the Market page — deliberately kept out of your job inbox — with archive and delete per thread. Neither side ever sees the other's email address.
Mark as sold asks what it actually sold for, not the asking price, and offers to remove the item from your inventory (on by default). That real figure feeds the community used-price median anonymously.
Remove takes the listing off the market for everyone straight away, with no undo in the UI. Use Mark as sold for actual sales; save Remove for withdrawing a listing.
Deleting a message thread is one-sided: your copy goes for good, the other person keeps theirs.
What happens to an archived listing
Removing or selling a listing archives it. The record is kept for ever — title, price, condition, city and dates stay in your history, and a real sold price keeps feeding the anonymous used-price median.
The photos are deleted permanently 90 days later and cannot be restored. Photos are almost the entire weight of a listing and serve nobody once it has been off the market for three months. The clock starts the moment it is archived; relist inside that window and the photos stay.
Your photo, company pictures and logos are deleted immediately. Remove one and republish your page, and it is gone from the published page in the same moment — there is no retention window, because those pictures live in the page itself rather than in an archive.
A listing keeps whatever currency symbol your account had when you posted it. Nothing is ever converted.
Settings
Five categories down the left, sixteen tabs inside them. You will spend time in four and never think about the rest.

Settings has two controls and they never move. The category button, top left, reads Category — Tab — Your business — Companies & branding, say. Click it for all sixteen tabs under their five categories, each with a line saying what it is for. The section row runs along the top beside it and lists the sections of the tab you are in. Nothing else changes position between tabs, so the content always starts in the same place.
Four tabs — Your public page, Studio, Rate Guide and Agreements — put every section on one scrolling page instead of swapping between them, because those are the ones you fill in top to bottom rather than dip into. There the section row is a set of jump links: click one and the page scrolls to it and flashes what you landed on.
Nothing was removed when this grouping arrived — every tab is the tab it was, under a heading that says what it is for. Team & access appears only if you are the workspace owner.

| Tab | What's in it |
|---|---|
| You — your account and how KitSlate looks | |
| Profile & account | Your photo, first and last name, and a read-only sign-in email. Your first name and picture travel to the Market, your public page and your emails. Your email is never used as a public name. |
| Your public page | Live/off, both handles, both addresses, and all the public-page content — see Profile. Also reachable from NETWORK → Profile in the sidebar. |
| Plan & subscription | The Current plan line, the plan cards and Manage billing. |
| Feedback | Send a bug, idea or question with up to three screenshots. |
| Your business — the companies you invoice as | |
| Companies & branding | An Overview table with every company as a row, then one section per company: name, EIN / Tax ID, address, email, reply-to, phone, website, logo, brand colour (document headers and totals), a one-line description for your public page, and the email footer. One is marked Default brand and fills any blank field on the others' documents. Also the app accent colour. |
| Team & access | Seats and permissions — see Plans, billing & team. Owner only; it does not appear at all for anyone else. |
| Studio | Studio name and address, how many rooms, minimum booking, then per room: per hour, half day, full day and size in sq ft with a $/sq ft sanity check. Plus bundles, full-building rates, and podcast / multi-camera / green-screen rates. |
| Money — quoting, invoicing and getting paid | |
| Quotes | The defaults behind every quote: Quote defaults (which sections show), Equipment & lines, your own Misc lines and Presets. Terms and payment details used to live here as well; they moved, and the tab carries a pointer saying where. |
| Invoices | What a new invoice starts with, per company — Invoice numbering, Terms & due dates, Notes & footer and Document display. Not invoice editing; that belongs to the document itself. |
| Payments | Per company: billing currency, whether online payment starts on, and a card for each method you accept — Online card payment (Stripe), Credit cards, American Express, Bank transfer (ACH), International wire, Zelle and PayPal / Venmo. Each has an on/off toggle, a percentage and a fixed fee, and a standing You absorb it / Add to the invoice answer. Below them, the bank details that print on the document: bank, account name and number, routing, SWIFT / BIC, IBAN, bank address, intermediary bank, Zelle, Venmo, PayPal and cheque payee. A second section, Banking fee lines, holds the one-off fee catalogue — that one is shared across every company, the method cards are not. |
| Accounting | Ledger accounts, Country & market (where you work, and the symbol your own equipment and rate figures carry) and Export. |
| How you work — documents, calendar and rates | |
| Agreements | Agreement templates, Saved clauses, Agreement profiles, Signing and Defaults — see Agreements. |
| Requests & approvals | Whether answers from clients and crew are held for your approval, how long request links live, and when To do offers a reminder — see Requests & approvals. |
| Calendar | A signpost, not a settings page. The calendar's own settings are a workspace of their own — see Calendar. |
| Rate Guide | The pool (sharing toggles), country & currency, the where-you-fall scale, external rental prices, your studio rate card, and which rental terms you offer clients. |
| Connections & data — other software, and your data | |
| Integrations | Connected services — Google Calendar, ShareGrid, Stripe and Email, which must be set up before sending documents or handing off. QuickBooks, Wave and Xero appear here as file exchange only: KitSlate reads and writes their CSV formats and does not connect to any of them. Data in & out is a full table of every import and export in the app. |
| Data & backup | Backups, restore, the per-module resets and the danger zone — see below. |


One colour picker
Anywhere KitSlate asks for a colour — a company's brand colour, the app accent, a calendar's colour, the fallback behind your public page's banner — you get the same control: a dot showing the colour it is now, which opens a small panel holding the house palette and one spectrum dot for anything else. It opens against the dot you pressed, and Esc closes it.
Where two tabs once wrote the same value, one of them was removed rather than kept in step. Payment terms are on Invoices; ledger accounts are on Accounting; bank details and method fees are on Payments. Quotes points at all three instead of repeating them, and the calendar's settings exist in exactly one place.
Send feedback from Settings → You → Feedback — pick Bug, Idea or Question, attach up to three screenshots (drag, browse, or just paste with ⌘V), and press Send feedback →. Replies from the KitSlate team arrive as a thread on Activity, not by email.
Your data & backups
The most important section in this manual. Read it once, properly.

Where your data actually lives
Everything — inventory, clients, crew, jobs, quotes, invoices, settings — is held in your browser's local storage as one blob.
If you are signed in, the same data is also written to the server a couple of seconds after every change, and the server copy is the real one. Sign in on another machine and your work is there.
Things that wipe it: clearing site data or cookies, a browser reset, a private/incognito window, a different browser, a different computer, the operating system evicting storage under disk pressure, and browser storage simply filling up.
The prototype gets roughly 5 MB. Attached receipt PDFs are the usual thing that fills it — though when you're signed in, imported originals go to private cloud storage instead of the browser, so this mostly concerns signed-out use.
Watch the last row of the status panel, top right of every page. Saved to your account 5m ago is healthy. Saved on this device means you are on your own. Offline — saved here, syncs when back is fine and will catch up.
"⚠ Not saving — browser storage is full. Your recent changes are only in this tab and will be lost if you reload." Do not reload. Press Export a backup now first, then free space by dropping receipt PDFs.
The routine to actually follow
- Sign in. That alone gets a server copy of everything.
- Leave cloud sync alone — it is automatic. Clicking the sync row in the status panel opens the sync window, which has a Sync now button if you want to force it.
- Export a
.jsonevery week anyway — and always before a big import, a bulk price change, or anything in the danger zone on Data & backup. - Keep exports somewhere that isn't this laptop. A backup on the machine that dies with it is not a backup.
Exporting and importing
Export backup (.json) downloads the whole workspace as kitslate-backup_<date>_<time>.json.
Import backup checks the file is a real KitSlate backup, then tells you what is in it and asks you to confirm — Replace my data. Anything that isn't a backup is refused and nothing changes. But once you confirm, it replaces everything in this workspace and there is no undo. Export your current state first, every time.
Encrypted cloud backup without an account
If you are not signed in, ☁ Sync offers key-based encrypted backups instead. You are given a phrase like slate-grip-tally-274 under YOUR SYNC KEY — SAVE IT SOMEWHERE REAL, and your data is encrypted in the browser before it leaves. The last 20 backups are kept.
The key is what restores a backup. Record it somewhere other than the browser you are using — without it, this device cannot restore from your cloud backups.
To restore on another machine: ALREADY HAVE A KEY? RESTORE THIS DEVICE FROM IT → paste → Restore →. This one does confirm first.
The three sections of the tab
Settings → Connections & data → Data & backup has its own rail with three sections, and they are ordered by how dangerous they are.
- Backup & recovery — safe. Nothing on it removes a record, and it says so at the top. It also tells you the date you last exported a backup, or that you never have.
- Workspace data, under RESET — one card per module, each resetting on its own. You never have to clear everything to clear one thing.
- Clear everything, under DANGER ZONE — the two whole-workspace actions.
Resetting one module at a time
Each card names the module, counts what is in it right now, and lists Deletes beside Keeps before you touch anything.
| Card | Deletes | Keeps |
|---|---|---|
| Inventory | Equipment items, kits, categories, storage locations | Productions and their gear lists, clients, crew, quotes and invoices |
| Clients | Client records, their contacts and addresses | Productions — they keep the client name as typed — and quotes and invoices already written |
| Crew | Crew records, roles, rates and contact details, outstanding crew requests | Call sheets (they keep the rows already on them), productions, clients |
| Productions | Every production, their gear lists, call sheets, quotes, invoices and agreements, and the expenses attached to them | Inventory, clients, crew, studio, presets and templates |
| Quotes & invoices | The quote and the invoice on every production, plus imported income-tracker invoices | The productions themselves, gear lists, call sheets and agreements, clients, ledger accounts |
| Documents | Call sheets, agreements, and the send history on every document | Productions, quotes and invoices, gear lists, templates and clauses |
| Studio | Rooms and spaces, bundles, hourly / half-day / full-day / buyout rates, the studio address | The company the studio runs under, productions booked into it, Rate Guide sharing settings |
| Presets | Packing presets, call-sheet templates, agreement templates, clauses and profiles, saved misc lines and quote presets, remembered import column mappings | Everything they were used to build — productions, documents and inventory are untouched |
Three of the cards carry a warning worth reading before you press anything. Clients: quotes and invoices that referenced a client fall back to the plain name, and the contact block on those documents empties. Productions: a production owns its documents, so resetting productions takes all five with it — reset Quotes & invoices or Documents instead if that is what you meant. Quotes & invoices: an invoice already published to a client lives on the server and is not removed by this; unpublish it from the invoice itself.
Two things the page reports but deliberately offers no reset for. Marketplace listings are managed where they are sold, so the card links to the Market instead of deleting them here. Notes are a field rather than a module — on an item, a payment, a quote line, a call sheet — and go with the record that carries them.
The destructive actions
| Action | What it does |
|---|---|
| Clear everything | Empties the workspace in one action — inventory, kits, clients, crew, productions, quotes, invoices, call sheets, agreements and presets, with the exact count of each listed before you confirm. Not deleted: companies and branding, your account and sign-in, plan & subscription, integrations, global settings and preferences, and backups you have already exported. No undo and no staged rollback. |
| Reset to starter data | Discards this workspace entirely and rebuilds it from the starter inventory KitSlate ships with. Deliberately separate from Clear everything: that one leaves you empty, this one leaves you with sample data. The page reloads. |
| ↺ Re-import my uploaded files | Harmless, and not part of the danger zone — it sits under Backup & recovery. Brings back the files this workspace was set up from (rental history, sample receipts, the sample call sheet). Nothing is deleted and anything already present is skipped. |
Every destructive action on this tab, module resets included, goes through the same gate. A button opens it; the gate itself is what runs the action.
- A module reset and Reset to starter data ask you to type RESET.
- Clear everything asks you to type DELETE EVERYTHING and to type the email address this workspace is signed in as. KitSlate has no password to re-enter, so the account address is the second check. If the workspace is not signed in there is no account to check against, and the page says so — the typed phrase is the only gate.
The final button stays disabled until both fields match exactly; the address is compared without regard to case, the phrase is not. Cancel closes the gate and does nothing. The gate is the guard — clicking the button that opened it is never enough on its own.
Plans, billing & team

| Plan | Price | Companies | Team seats included |
|---|---|---|---|
| Profile | Free | Personal profile | — |
| Solo | $19/mo | 1 company | 1 seat — you |
| Studio | $49/mo | 2 companies | 3 seats |
| Production House | $149/mo | Unlimited companies | 8 seats |
| Enterprise | Custom pricing | Unlimited companies | Custom seats |
Seats are logins for the people who run your business. Crew, clients and anyone you send a private link never need a seat. Extra seats beyond a plan's allowance aren't billed yet — a workspace over its allowance keeps every member working and simply can't add more until seat billing ships or the plan changes.
The free Profile tier leads with your own public profile page, plus buying and selling used gear — the production toolkit starts at Solo. The profile is free on purpose: it is the page a buyer checks before handing money to a stranger, so it would be self-defeating to charge for it. Activity is open on the free tier too, for the same reason: your page carries a contact form and the market lets buyers write to you, so the page those land on cannot be behind a paywall. What is genuinely gated: the company-profile cap, the studio features (Studio and up), bulk CSV export (Studio and up), and bulk import (Production House and up).
The full JSON backup, calendar .ics export and B&H receipt import are not gated. Your data is not held hostage to a plan.
Checkout is Stripe, and Manage billing opens the Stripe portal for card changes and cancellation. In the sandbox nothing can charge you — the button reads Exit sandbox to subscribe.
If your plan was given to you
A plan can also arrive as a gift — an invitation with a few months of Studio on it, say. There is no card and no subscription behind one, so there is nothing to cancel and nothing that renews. Settings → You → Plan & subscription says so on the Current plan line at the top of Plan & billing: Complimentary — no charge. if it is open-ended, or Complimentary — ends Mar 3, 2027, then drops to the free plan. if it has an end date.
On its date the account drops to the free Profile tier. Nothing is deleted and nothing is charged — the paid features simply stop, and subscribing normally picks them straight back up. Take the date on that line at face value; it is the day it happens.
Adding people to your workspace

Team & access has four sections down its rail:
- Overview — included seats, seats used, available, pending invitations, plus your plan, your companies and a line telling you exactly what will happen if you send another invitation.
- People — everyone who can sign in, you included. Each person shows their role, whether they hold a seat, their email, when they joined and when they were last active.
- Invitations — people you have invited who have not signed in yet, with Resend, Copy link and Cancel.
- Roles — what each of the five roles opens, and what a role does not do.
This is the number that catches people out. A seat is taken by you plus every active member, but an invitation that has not been accepted is also holding one — so three included seats with two invitations out means one person can still be invited, not three. The Overview tiles count it that way, and so does the check that decides whether the next invitation can go.
Cancel an invitation and its seat is free immediately.
The machinery is live: role templates, invitations, the nine permissions, suspend/reactivate and the single-editor lock all work, and each plan includes the seat allowance in the table above.
Nothing bills for a seat yet. Seats beyond your plan's allowance aren't sold: a workspace at its allowance keeps every member working and simply can't add or reactivate anyone until a seat frees up or the plan grows. When per-seat billing ships it will be priced then — never charged retroactively.
+ Invite someone takes their name and email, then their role — Administrator, Producer, Studio Manager, Bookkeeper or Read only. A role sets nine areas at once: five are normally on (Jobs & documents, Inventory, Crew database, Clients database, Calendar) and four normally off, three of them sensitive (Money, Crew rates, Rate Guide, Company settings). Change any single area afterwards under Manage access and the role reads Custom — the areas are what the app actually reads.
They get an invite email with Accept your seat. It expires in 14 days and must be accepted while signed in as that email address. Invite the same person twice and KitSlate stops you and offers to resend the first one instead, because a second invitation would hold a second seat for one person.
Roles and areas decide what the app offers someone — which pages open, which buttons exist. They are not record-level isolation, and there is no per-company restriction: everyone with a seat can work under every company in the workspace. Give someone a seat because you trust them with the business. If you genuinely need someone kept to one letterhead, that is a separate workspace today.
Members with permission can edit. Because the workspace saves as one document, KitSlate uses a single-editor lock: if someone else is in a record you see "<Name> is editing — you're viewing only." with Ask to edit, and they get Let them in. Owners can Take over.
Crew and clients you email call sheets, quotes, agreements or handoff forms to never need an account or a seat. Only people working inside your workspace do.
Suspending, reactivating and removing
Open anyone under People → Manage access. Both destructive actions ask first.
- Suspend ends their access straight away and frees their seat. Their role, permissions and everything they created stay exactly as they are, and they are not told why — so it is worth a word with them. Reactivate puts them back, provided a seat is free.
- Remove takes them out of the workspace and cancels any invitation still outstanding for their address. Nothing they created is deleted.
Transferring ownership is not built. The owner is stamped on every record, invoice and subscription in the workspace, so it has to be one deliberate, reversible move rather than a button — it is on the list, not in the product.
Things that catch people out
Every warning in this manual, in one list. Worth skimming before you trust the app with a real job.
Data
- Signed out, your browser is the only copy of everything. Sign in, and still export weekly.
- Import backup asks you to confirm, then replaces everything. There is no undo — export first.
- Lose your backup key and you cannot restore from the cloud backups.
- Storage caps around 5 MB. Receipt PDFs are what fill it. Heed the red banner.
Deleting
- Deleting from the Gear List tab deletes the whole production and all five documents. Every other tab deletes just that document. To take a job off the board without losing anything, archive it instead.
- Deleting a quote also deletes its invoice.
- Deleting an inventory item or a camera preset happens immediately, with no confirmation.
- Deleting a category deletes its items.
- Deleting a client can blank contact details on an already-issued quote or invoice.
- Remove on a Market listing is public and immediate. Use Mark as sold for sales. The record is kept for ever; its photos are deleted after 90 days and cannot be restored.
- Profile and company pictures are deleted immediately when you remove them and republish — no retention window.
- Deleting a rental row before pressing Return leaves that gear marked out forever.
Things that overwrite or reset
- Reset statuses on a gear list wipes every packing mark and puts it all back in storage.
- ⧉ Duplicate project deliberately resets packing statuses and clears send tracking.
- A returned assigned document overwrites, it does not merge. The one exception is a crew address-book request, which fills blanks only and parks anything that disagrees.
- Deleting a linked equipment line on a quote also removes that item from the gear list.
- Changing the pricing term rewrites the DAYS figure on every equipment line.
- Hand-editing a camera-settings field detaches that sheet from its preset.
Things that don't do what you'd assume
- The CREATE launcher on Today starts blank drafts; with a production open, the workflow cell in its header switches tabs.
- Blank drafts you never type into are silently discarded.
- Clicking a bar in the Calendar month view opens the Call Sheet, not the gear list.
- Double-booking is a warning, not a block — and it covers gear and rooms only, never people, and never the External Rentals ledger.
- Calendar feeds are read-only in; the .ics export is a one-time file, not a live subscription.
- An empty page usually means a company is switched off in the sidebar.
- "RENTED INCOME" in Earnings & payback is internal booking revenue, not the external rental ledger.
- Inventory CSV import skips duplicates; Clients and Crew import fills blanks on them.
- Country selection changes the currency symbol on your own equipment and rate figures only — it converts nothing, and it never sets what a company invoices in.
- Publishing your public page is a snapshot — but the Live/Off switch acts the moment you click it, and it hides rather than unpublishes: your address and everything on the page are kept.
- The item quantity field does not exist — multiples are separate rows.
- Marking a document not required does not delete it. It stays on the production, struck through, and restores untouched. Deleting is a separate, destructive action.
- An invoice reading Blocked is not an error — it is waiting on the quote being approved.
- Archived jobs leave the date buckets on All Projects entirely and stop counting toward attention. Nothing is deleted.
- Recently Updated on Documents lists real events only — a document nobody has sent, approved or paid carries no time at all.
Not real yet
- Remote signing is real: ✎ Send for signature mails a private signing link per person. ✉ Send a copy is the separate one — it emails the agreement as a PDF for the record and collects no signature.
- Signing runs on KitSlate's own engine. There are no third-party signing providers.
- Rate Guide figures are approximate community benchmarks, labelled with their source on every row.
- Team seats work and each plan states its included allowance. Seats beyond the allowance aren't sold yet — extra-seat billing ships later, and until then a full workspace simply can't add more people.
Send it from Settings → You → Feedback with a screenshot — replies come back as a thread on your Activity page. And if you just want to try something risky first, do it in the sandbox.