🏠 Home
Home is your DAY, not your money — revenue lives on the Revenue tab. The tiles show Today's Jobs, Active Clients and an Unpaid count that jumps straight to Revenue when tapped. 🗓️ Today's Schedule is collapsed by default with the job count next to it — tap ▸ Show to open it.\nYour daily dashboard: today's jobs, health banners (offline, low stock, overdue), quick actions, and the 🌙 Evening Mode button. Start and end your day here.
📅 Schedule & Google Calendar
Month view shows every day's appointments as chips (time-first, green = jobs, blue = unconverted calendar events, "+N more" when full) — book from here so you can see each day's load. Week/Day views for detail. 🔍 search bar finds any appointment by customer name and jumps to its day.
📋 DISPATCH (Owner + Office with Scheduling): pick a day and see one lane per active technician plus Unassigned. Drag on desktop, or use the Assign/↑/↓ controls on touch screens. Each job carries an estimated duration (60 minutes is the visible default), and overlapping start/end windows for the same technician turn amber. Time/duration changes save immediately; if the server rejects or the network fails, the board restores the prior position instead of pretending the move saved.
Convert a Google appointment to a job with one tap — the original Google event is deleted (single occurrence only; recurring series stay intact) and Edit Job opens to set the price. Recurring customers auto-connect by series, then address, then name; 🔍 Match & Connect sweeps any stragglers.
🚫 No-Show on a job card records the visit attempt, zeroes the charge (off Money Owed), and offers a prefilled "sorry we missed you" reschedule text.
➕ Property (on job cards and in Start Service) adds another property for the same customer on the spot — nothing re-entered — and keeps each location's work and regulatory records separate. If the Florida pack is enabled, each property can carry its own 5E-14 record.
If Google shows "0 events" or sync dies: Settings → disconnect/reconnect Google. The consent screen is published to production so tokens shouldn't expire weekly anymore.
👥 Clients
💜 ZELLE + ✉️ REMINDERS: 💜 Zelle (customer card + Money Owed) opens a prefilled text asking them to Zelle payment — it asks first whether to include the amount. ✉️ Send Reminder emails the customer their unpaid invoice again, with a friendly reminder line above it and the pay link included; if they have more than one unpaid invoice you choose oldest or newest. 💬 Text Remind still works as before. 🔔 Service Reminder now reaches them however it can: email if that's all you have, text if that's all you have, and if you have BOTH it sends the email first and then opens the text ready for you to tap send.\n🗑️ DELETING A PROPOSAL FROM THE LEADS PAGE: open Leads, find it under 📋 Open Proposals, tap 🗑️. It asks what else is attached first, same as everywhere else.
🚚 PULLING STOCK FOR THE TRUCK: in Chemicals, tap 🚚 on a chemical or material. It moves one container/unit off the shelf and onto the truck — shelf stock drops by one and stays down because that item is no longer available in shelf inventory. When it is finished, tap ✅ to clear one off the truck. Low-stock warnings look at shelf stock only.
🛡️ THE SERVICE GUARANTEE: there is a 🛡️ Service Guarantee box in the proposal builder, below Treatment Limitations. Whatever you put there prints in its own highlighted green box right after the pricing \u2014 not buried in the benefits list. Leave it blank on a proposal that carries no guarantee and nothing prints.
🔘 WHAT THE CUSTOMER CAN DO FROM THE EMAIL: three buttons sit at the bottom of the proposal \u2014 Review & Accept Proposal (choose an option and sign), I'd like more information (emails you, subject pre-filled), and Not interested (one tap, you get a push, they send nothing). If you also see grey suggestion chips below those in Gmail or Outlook, those belong to the customer's mail app, not to ProPest Hub \u2014 they cannot be changed, and tapping one only writes a reply, it does not sign anything.
✨ DO I HAVE TO TYPE THE ACCEPT OPTIONS? No. Tap ✨ Write Proposal Sections and the AI fills them from the prices already in your notes. The faint Option A / Option B text you see in the empty box is just an example of the format \u2014 it is not saved. Edit the lines afterwards if you want different wording.
✍️ LETTING A CUSTOMER ACCEPT ONLINE: in the proposal builder, type each choice on its own line in the '✍️ Options the customer can accept' box, then email the proposal. The email carries a green Review & Accept Proposal button. They choose an option, type their name, tick the consent box, and you get a notification saying who accepted and which option. The proposal then shows as accepted and waits for you to tap \u2705 Approved \u2192 Agreement \u2014 nothing converts on its own.
📋 A PROPOSAL WITH TWO PRICE OPTIONS: type both into the Investment Summary box on separate lines, e.g. 'Home & Perimeter Only - $185.00' then 'OR' then 'Complete Package - $350.00'. Both print on the finished proposal. One plain number still prints as the big total.
✉️ EMAILING A PROPOSAL: in the builder, tap ✉️ Save & Email \u2014 it saves and takes you straight to the same preview screen invoices use, so you always see it before it goes. 💾 Save & View PDF still works the same as before.
📋 STARTING A PROPOSAL FROM A CUSTOMER: open their card and tap 📋 New Proposal in the quick actions. Their name, phone and address are filled in and the proposal is already attached to their card.
⏱️ IF THE AI SAYS IT RAN OUT OF TIME: that is the SERVER's 10-second limit, not your internet. Tap \u2728 again \u2014 it often succeeds on a second try \u2014 or trim the notes slightly. You do NOT need to reformat anything: bullet lists, price tables and pasted proposals are all fine.
✨ IF A \u2728 PROPEST HUB AI WRITE BUTTON FAILS: the message now tells you WHY. 'Cut off' means the reply ran out of room \u2014 try again or trim the notes. An AI service error means the service itself is having trouble \u2014 wait and retry. If it says the reply could not be read, tap 📋 Show AI reply and copy the text into the fields by hand; nothing you wrote is lost. Detailed notes with bullet lists and price tables are fine now \u2014 those used to be the exact thing that broke it.
📝 SEEING A CUSTOMER'S PROPOSALS AND AGREEMENTS: open their card \u2014 📝 PROPOSALS and 📋 AGREEMENTS sit right under Invoices and Receipts, each with a Show drop-down. A proposal accepted online shows who signed and which option. Forms & Reports is now only for termite notices and inspection reports; invoices, proposals and agreements are no longer listed twice.
🧾 SEEING A CUSTOMER'S RECEIPTS: open their card and tap Show under 🧾 RECEIPTS. 📄 View opens exactly what they were sent. 🧾 Send Receipt makes a new one already filled in with their name.
💵 FIXING MISSING PAYMENT DATES: Settings \u2192 🩺 Data Health \u2192 🔍 Check Payment Dates. It shows how many old paid jobs have no payment date and what each would be set to, and changes nothing until you confirm.
🇺🇸 FLORIDA PACK — 📑 WDO CONTRACT COMPLIANCE PACKETS: use Documents → Compliance & State Records → WDO Contract Compliance Packets whenever the company enters a Florida WDO treatment contract. ProPest tracks the facts that trigger FDACS-13692, the second-contract FDACS-13671 consent, and FDACS-13712 subcontracting notice/approval. It opens the current official FDACS source instead of fabricating signatures; upload the signed copies to the packet. Employee Files also track current Florida WDO duties and duty-specific training evidence. The current FDACS-13606 is opened from the official agency source because its applicant-only background questions and original signatures are not auto-filled or stored by ProPest.
🇺🇸 FLORIDA PACK — ✨ USING PROPEST HUB AI FOR A WDO REPORT: open the WDO builder and use the ✨ box at the top \u2014 speak or type your raw notes, including what you could not get to and why. It fills the sections; you check them. It will never invent a finding your notes did not mention.
📄 OFFICIAL WDO FORM: fill in the WDO report as normal, then save or tap 📄 Official FDACS-13645. ProPest Hub opens the verified FDACS-13645 itself with your details filled in, ready to print or save. Tap ✍️ Sign first if you want your signature and date on it \u2014 that is deliberate each time, never automatic. No custom WDO lookalike is generated.
📨 CHASING A PROPOSAL: in Leads, tap 📨 Follow Up on any open proposal. It resends the same proposal with a short follow-up note, and tells you first when you sent it and how many times you have already followed up.
🧪 FINDING A CHEMICAL: in the Product Library, tap a classification to open it. Searching opens the matching groups automatically. EPA REFERENCE (v257): an Owner or Office user with Chemicals permission can verify a saved EPA registration number against the U.S. EPA PPLS service. The verified snapshot is reference data only — it never changes shelf/truck stock, cost, vendor links, SDS source, or company mix rates. Changing the EPA number after verification marks that reference stale until it is re-verified. A mix-rate card is treated as company-approved only after a human explicitly checks the approval box and records the source reviewed; AI never checks it or invents a missing rate. DEVICE INTELLIGENCE (v257): the existing QR/barcode engine now also supports pheromone monitors, mechanical traps, wildlife devices and company-defined custom devices, with structure/zone, model, install/maintenance lifecycle data and actual pest counts/species where applicable. 🇺🇸 FLORIDA STARTER LIBRARY: after a company selects United States / Florida, a brand-new empty Product Library automatically receives the Florida starter reference package at ZERO shelf/truck stock. An existing Florida company is never wiped or overwritten; if starter items are missing, the Product Library shows Add Missing Items. Existing stock, costs, vendor links, notes and company-entered product fields win. Every starter product remains editable and must be checked against the current physical label before use.
💵 RECORDING A PART PAYMENT: tap 💳 Mark paid on the invoice and change the amount to what they actually paid. The invoice stays open for the rest, showing the balance. Do the same again when they pay the remainder \u2014 it settles itself and marks the visits paid at that point.
🧾 ADDING TAX OR A DISCOUNT TO AN INVOICE: in the invoice builder, below the line items, enter a discount ($ or %) and/or a sales tax rate. The breakdown updates as you type and prints on the finished invoice. The discount always comes off before tax is worked out.
📲 SENDING SOMEONE THE APP: Settings → 👥 People & Access → 📲 Invite next to their name. Text it or copy the message. They open it on their phone and follow the install steps. Their Business Email / ProPest Login is shown in their employee record; give the ProPest software password separately, never inside the install link. A technician's regulatory field credential stays separate from their normal ProPest password. Credential and training status live in the Employee File, visible only to the Owner or an Office user explicitly granted Employee files / HR access.
🔐 LOGIN SECURITY: after a successful sign-in, the person's name is shown in the center of the header. Every successful Owner, Office or Technician login also alerts the Owner's registered push devices and is saved in the Owner's notification inbox. OWNER PROFILE: the owner sets their own name and chooses Owner, President, or General Manager in Settings → Business Details. That identity appears in the center of the header; a new company with no owner profile is taken to that setup on owner login. SCHEDULED NOTIFICATIONS: there are no company-wide hard-coded times. The company sets its own Tomorrow's Jobs rundown time, Business Report times, and custom reminders from the Notifications bell; blank means off.
👥 HIRING + SOFTWARE ACCESS: Employee & HR Files → ➕ Start New Hire lets any Owner or Office user with Employee files / HR access create the employee profile and begin the hiring file without granting software permissions. That profile is automatically marked Access Pending Approval. The Owner, or an Office user the Owner explicitly delegated Employee Access Administration to, then opens 🔐 Set Up Access to assign the ProPest login email, software password, role and only the permissions inside that administrator’s Owner-defined delegation ceiling. The administrator must personally have every permission they delegate. Only the Owner can grant/revoke Employee Access Administration or change that ceiling, and a delegated administrator cannot elevate their own account. The separate Delete Records authority is also Owner-rooted: a manager may receive it, but an Access Administrator cannot grant it onward. Settings → 👥 People & Access remains the Owner's direct account-administration view. Their mailbox password is NEVER entered into ProPest.
🗂️ DOCUMENT CENTER (v255.3): Documents opens with a filing map instead of a pile. Use Company, State & Regulatory for licenses/insurance/W-9/WDO; Workforce & Safety jumps to Employee & HR Files or Safety & OSHA according to permission; Customer & Contract Files holds proposals/agreements; Service & Inspection Records holds reports/notices/inspections; Financial & Tax points to finance-scoped files while Revenue/Money Owed remain the live financial record source; Templates & Blank Forms are grouped by filing category. All Uploaded Files is a separate collapsed archive/search for when you know a filename.
🩺 CHECKING YOUR DATA: Settings \u2192 🧺 Data Health \u2192 Check My Data. It lists what is missing and who it affects. Fix a few at a time as you visit customers \u2014 asking for an email address at the next service is usually all it takes.
📅 THE SCHEDULE OPENS ON TODAY: however far back you searched last time, coming back to the Schedule tab puts you on today's date again.
✏️ FIXING A PREPAID BALANCE: on the customer card, tap ✏️ Adjust next to \u2795 Add Credit. Enter what the balance SHOULD be (0 clears it) and why. A note is saved on the customer showing the change. Remember it only moves the balance \u2014 if you are undoing a test, also delete that customer's 'Prepaid Credit' job so the revenue goes too.
☑️ DELETING SEVERAL THINGS AT ONCE: on a customer card, every list \u2014 invoices, receipts, proposals, agreements, notes, photos and uploaded documents \u2014 has a tick box on each row and a Select all. Tick what you want gone and hit 🗑️ Delete once. You are told how many you selected, and warned if any are paid invoices, signed proposals or receipts.
🇺🇸 FLORIDA PACK — 📍 THE LOCATION ON YOUR 5E-14: saving a new application record stamps where you were. The record shows 📍 with the coordinates \u2014 tap them to open the spot in Google Maps. If your phone asks for location permission, allow it; if you decline the record still saves and simply says no location was captured. Editing an old record does NOT change its original stamp.
🪟 OPENING ONE SCREEN FROM ANOTHER: just tap it. The new screen opens in front, and the one you came from waits behind with everything you had typed still there. Close the new screen and you are back where you were. You no longer need to close a screen before opening the next one.
💳 WHY AN INVOICE MIGHT STILL SHOW AS UNPAID: it counts as paid once you tap 💳 Mark paid on the invoice, OR once every visit it covers is marked paid. Either route clears it from the Home resend list. If one visit on a multi-visit invoice is still unpaid, the invoice correctly stays listed.
💵 AN INVOICE YOU RAISED WITHOUT LOGGING A VISIT still counts as money owed. It appears in Money Owed, in that customer's Balance Due, and in your Revenue unpaid figure. If the invoice covers visits you logged, those visits are what's counted \u2014 the invoice isn't added on top, so your totals never double.
🗑️ DELETING SOMETHING THAT HAS OTHER THINGS ATTACHED: just delete it as normal. Before anything happens the app lists everything connected \u2014 invoices, reports, photos and any jurisdiction-specific regulatory records \u2014 with tick boxes. Tick what should go too; anything you don't tick stays. Protected compliance/regulatory records are never pre-ticked. When the Florida structural pack is enabled, 5E-14/WDO records use the Florida retention warning before deletion. If the app can't work out what's connected it refuses to delete anything rather than guess.
💳 SOMEONE PAID BY WIRE, ACH, ZELLE, CASH OR CHECK: open the invoice \u2014 on the customer card under 🧾, or in Revenue under Resend Unpaid Invoices \u2014 and tap 💳 Mark paid. Choose how they paid and the date, then Mark Paid. The invoice and every visit on it are marked paid together, and the card shows how it was paid.
🔁 A CUSTOMER WANTS THE SAME WEEKDAY EVERY MONTH (e.g. always the 3rd Tuesday): open their card, 🔁 Recurring Schedule, set the unit to months, then under 'Monthly pattern' choose 'On a set weekday' and pick 1st/2nd/3rd/4th/Last and the day. You can switch an existing date-based schedule over the same way \u2014 edit it, change the pattern, save, and all future visits move.
🔗 A DOCUMENT OF ANY TYPE ISN'T ON A CUSTOMER'S CARD: open the Documents tab and tap the orange 🔗 DOCUMENTS NOT ON A CUSTOMER CARD bar at the top. It checks receipts, service reports, proposals, agreements, termite notices, inspection reports, invoices, and WDO reports when the Florida pack is enabled, all at once. Tap 🔗 Link beside one, pick the customer, Attach. The name printed on the document never changes \u2014 only which card it belongs to.
🔗 FINDING AN INVOICE THAT ISN'T ON ANY CARD: the Revenue page lists them under '🔗 INVOICES NOT ON A CUSTOMER CARD', including invoices that have already been PAID. Tap 🔗 Link next to one, pick the customer, Attach.
🔗 ATTACH AN INVOICE TO A CUSTOMER BY HAND: if an invoice ever isn't showing on the right customer's card, the Resend Unpaid Invoices panel marks it 'not on any customer card' with a 🔗 Link button, and every invoice row on a customer card has a 🔗 too. Tap it, type the customer's name, pick them, Attach. Only the card connection changes — the name printed on the invoice stays as you wrote it. Push notifications also now name the actual customer who paid, confirmed, or opened an email.\n🗑️ DELETING THINGS: the 🧾 Invoices list on a customer card now has a 🗑️ button per invoice — use it to clear duplicates. Deleting an invoice never deletes the work: those visits simply go back to needing an invoice, so you can invoice them properly again. When the Florida structural pack is enabled, 5E-14 records have a 🗑️ too; they ask twice and show the Florida retention warning first — use that only for an entry made by mistake or duplicated. 💰 TAP BALANCE DUE on the customer card to jump straight to that customer's invoices.\n🔁 RECURRING SCHEDULE: on the customer card, set up their recurring service once — service, price, every N days/weeks/months, first visit, usual time. Saving books all their visits for the next 12 months; each one is a normal job on your schedule AND its own event in Google Calendar. The app keeps the year topped up automatically. Editing one of their visits asks whether the change is for that visit only or everything going forward; editing the schedule itself rebooks the future visits. Pause stops new visits; Delete asks what to do with the booked ones. Visits with completed work, payments, invoices or records are never touched by any of this.\n💲 SERVICE PRICING: every customer card has a Service Pricing section — the Regular Service Charge you bill them for their normal service, plus Pricing Notes for add-ons and other services (fire ant add-on, rodent stations, annual termite…). Different customers pay different rates; this keeps each customer's numbers on their card. 💾 Save Pricing stores it on their record.\nADDRESSES ARE ONE FORMAT EVERYWHERE: a single line — street, city, state, ZIP ("123 Main St, City, ST 12345") — on customer cards, booking, properties, invoices and every builder. Older records that stored city/ZIP separately are joined into that line automatically when you open them; a missing state stays blank rather than being invented, and it's fully editable — nothing to re-type, nothing lost. Email is now on the booking form too, and flows to the customer card when you connect.\nFull customer profiles: contact, service history (newest first), notes, forms, documents, Cost-to-Service, and jurisdiction-specific regulatory records when a verified pack is enabled — each in a collapsible section with counts. Customer Defaults prefills their usual pests, chemicals, and price on repeat visits (one tap to clear). Adding a NEW customer never means typing anything twice: from Book Job, "No match" now offers ➕ Add as new customer, which opens the customer sheet already filled with the name, phone, address and email you typed — verify, Save, and it links straight back to the booking. The same carry-over works from a job's ➕ Add as New Client and from inside any document builder. Unlinked jobs can connect to an existing customer or become a new one via a pre-filled form — and connecting now BACKFILLS blank phone/address on the customer card from the job's info. ✏️ Client on any job card opens that customer's edit form mid-job.\n👥 Additional Contacts: one card can hold several people — e.g. the owner plus the daughter who schedules. Each contact has a name, relationship, phone, email and two independent ticks: 📅 Scheduling (who you call/text) and 💵 Billing (who the invoice goes to) — they can be different people, and you choose per customer. Nothing is automatic; unticked means the main record is used. If you add a customer at an address that already belongs to someone, the app asks whether to add them as a contact on that card instead of creating a duplicate.\nThe same protection now runs ANYWHERE you pick a suggested customer while booking a job or building a proposal/agreement/notice/report: if you've already typed a different name, phone or email, tapping the suggestion no longer overwrites it — you choose "use their info", "add what I typed as a contact on their card", or "keep separate".\nOn EVERY document builder and Book Job, once you link a customer, typing a different name (like the daughter who pays her mother's bill) keeps the document on the right customer's card — a "✓ Linked · Unlink" chip shows the link is intact, and the name you type is just what prints. Tap Unlink to disconnect, or pick a different suggestion to re-link. After you link a customer, the suggestion dropdown stops reopening — so you can finish typing the address, amount and notes without it interrupting or overwriting. Tap Unlink to search for a different customer.
🌿 Florida Field Pesticide Information & Posting
For covered Florida lawn, plant-bed and exterior-foliage work, use 🌿 Field Compliance before and after the application. Check the official FDACS prior-notification registry before planned covered work; if there is a match, record the required notice details and timing rather than guessing from an address. Lawn and exterior-foliage applications also require the real physical posting at the time of application — the app records evidence of that field action but a digital record never replaces the sign. If a customer requests pesticide information, record the product/active-ingredient information and safety information from the actual product label. The onsite-small-amount circumstance affects only the pesticide-type detail; it does not erase the prior-notification timing requirement. The panel links directly to the official registry and posting rule.
📋 5E-14 Compliance Records — Florida Pack
⏱️ DATE & TIME: logging live, the record stamps the time you tapped ▶️ Start Service using the company operating timezone. CATCHING UP ON PAPERWORK: if the job was an earlier day, the Service Date is taken from THE JOB'S DATE (not today) and the form tells you so — set the time and you're done. Both the Service Date and Service Time fields are editable — change them if you're filing the record later than you treated. The printed record shows e.g. "2026-08-03 at 2:15 PM".\nFlorida-pack pesticide application records: pests, method, multiple chemical lines (product, EPA #, volume + unit), weather, applicator. Every unit is available: gal, oz, qt, pt, L, mL, cc, lbs, g, tube, each, and acres (full/¾/½/¼). Weather auto-captures from the National Weather Service; if it can't get a reading it says so — just type temp/wind manually. View, edit, photograph, email (single or batch), or print any record.
💰 Revenue & the Money Model
Real-money P&L: Revenue (paid jobs) − Purchases (what you bought via 📦 Log Purchase) − Vehicle (the LARGER of mileage or actual receipts, never both) − Business Expenses = Net Profit. Per-job chemical usage is an insight line only — never double-counted.
Money Owed lists unpaid work OLDEST first so the longest-outstanding invoices are on top. Each customer row has its own 🧾 Create Invoice button — one tap opens the invoice builder for THAT customer with their unpaid visits pre-checked (no typing their name); the customer name on the row opens their card. NO DOUBLE INVOICING: once every owed visit for a customer is already on an invoice, the row shows ✓ Invoiced instead of the button — so you never invoice twice thinking one didn't go out. (In the visit chooser, already-invoiced visits start unchecked and are tagged with their invoice number; if everything's covered, the app asks before letting you create another.) Also on each row: Call / Remind / Mark Paid, plus a 📂 chip per job (date · amount) that opens that exact job. (The 🧾 Create Invoice button at the bottom of Revenue is for invoicing someone not on this list.) Mark Paid stamps the payment date — and if the customer holds 💳 prepaid credit, it offers to pay the visit from their balance.\n💳 Prepaid (annual-upfront customers): on the customer card, ➕ Add Credit logs the payment as revenue once and loads their balance; visits paid from the balance go to $0 with a Prepaid marker so revenue never double-counts; you're warned when the balance won't cover a visit. Done-but-unpaid jobs show 🧾 Create Invoice, which opens the invoice builder prefilled from that job (PayPal integration is built in — the invoice gets its pay link automatically when saved).\n🔴🟢 AMOUNT COLOURS everywhere: a job's price is RED from the moment it's booked and stays red until it's PAID — then it turns GREEN. Red = money not collected yet, green = collected. ($0 and cancelled jobs stay grey; Money Owed amounts are always red.)
Cost-to-Service shows what a visit/customer/month costs you (chemicals + drive estimate) versus what you charged. Revenue views: today/week/month/all-time, By-Month with year folders, custom range, and Tax Export.
🧪 Chemicals: mix rates & cost modes
The Product Library drives all chemical costing. Each product has a 💲 Cost counting mode:
• Measured + Mix Rate (e.g. "1 oz per 1 gal", "1.25 cc per 1 gal", "1.5 lb per 1 acre") — the app computes the concentrate actually used from the finished amount you log.
• Measured, no mix rate — the logged amount is priced directly (granulars in lb/oz, ready-to-use).
• Per tube/unit — whole-unit baits (package price ÷ tubes).
• Track only — logged for compliance, costs $0 (trace-use products).
Units convert only within their family (volume↔volume, weight↔weight, area↔area) — never faked across. If a chemical cost looks wrong: check that product's mix rate and cost/size/unit, then tap ♻️ to recalculate all jobs. A $0 line usually means no mix rate or cost set, or a cross-family mismatch.
The stock stepper (−/+) adjusts count on hand and never touches money. 📦 Log Purchase records money spent AND adds stock — that's what the P&L deducts.
📄 Documents & Invoices
The Documents tab holds Compliance docs, WDO reports, Templates, Proposals, Service Reports, Service Agreements, Termite Notices and Inspection Reports — all with View / Print, all listed NEWEST → OLDEST. The All-Documents hub shows every uploaded file; documents you create for a customer appear on their card automatically.\n📋 COMPLIANCE & LICENSING: your licence, insurance, W-9 and other company documents live here. Tap 📎 on a row to upload a file; each uploaded file then shows its name, its own 📄 View button, and a 🗑️ to delete it, right on the row (a row with no file says so and points you at 📎). The All-Documents hub has Select-all + Delete Selected for clearing several files at once. 📧 Email opens a draft to send one; these same documents are also pinned at the top of the attach list on every email and receipt.\n🧾 ONE INVOICE SYSTEM: a single 🧾 Create Invoice button everywhere — Revenue page, customer card, or a done-unpaid job. It gathers ALL that customer's completed-but-unpaid visits (any property, any date) into a pre-checked list — untick any, then Build One Invoice → one clean line item per visit (service · date · address · price), one total. Invoice numbers are unique and date-sortable (INV-2026-08-01-4471) and editable. Invoices save to the customer: card → 🧾 Invoices shows theirs, tagged ✓ Paid/Unpaid. The invoice remembers which jobs it covers — 💳 "Mark N jobs paid" clears them all in one tap (individual Mark Paid still works).\n💳 GETTING PAID: when you save an invoice with a total, a PayPal checkout link with the EXACT amount and invoice number is generated AUTOMATICALLY and fills the Pay Online section + QR code on the invoice (leave the Payment Link field blank — 🔗 PayPal is only for regenerating, and you can still paste another company payment link there instead if you prefer). When the customer pays: the money is captured, the invoice and its covered jobs mark themselves Paid, you get a 💰 push notification, and the customer lands on your website's thank-you page (canceled/failed payments go to the canceled page — never a thank-you).\n✉️ SENDING: every document type — invoices, 5E-14 records (single or batch), service reports, proposals, agreements, termite notices, inspection reports, review requests, receipts, templates and compliance docs — uses the company's configured email identity. The owner chooses either Company From + logged-in employee Reply-To, or the logged-in employee as the actual From + Reply-To. Every send shows a preview + confirm screen first (recipient, subject, body, attachments); nothing goes out until you confirm. The recipient defaults to the billing contact, then the customer email. The invoice email looks exactly like the printed invoice — header, BILL TO/SERVICE ADDRESS, line items, totals, ACH box, CHECK PAYMENTS box, Pay Online button + QR, program note and signature. Every send is logged.\n📎 ATTACHMENTS: the attach list shows this customer's records first, newest → oldest (same-day documents order by exact creation time). It covers uploaded files AND app-generated documents (5E-14s, reports, proposals, agreements, notices, inspections, invoices). Type in the search box to reach ANY document in the app (a W-9, another customer's report). Generated documents convert to REAL PDFs when attached, so they open on any phone; files you uploaded attach untouched (a photo stays a photo). If a PDF cannot be built, the document still attaches as a web file and the app tells you — never silently dropped. When you tick an attachment, an editable 📎 note appears — prefilled wording that tells the customer to download the files and open them in a browser (clicking directly in some mail apps shows raw code). It's added to the email just above your signature; edit it for that send, or clear it to leave it out.\n🧾 RECEIPTS: the receipt screen works like every other document. Start typing a customer's name and your customer list appears — pick them (or add them as new) and the receipt is linked to their card. ✨ AI Fill lets you talk or type what happened and fills the fields from ONLY what you said, never guessing an amount, date or payment method. 📧 Send by Email opens the same preview + attachment screen as everything else, with the recipient already filled from their billing contact and their documents in the attach list. 💬 Send by Text sends a plain-text receipt instead.\n✍️ WRITE AN EMAIL TO ANYONE: ✍️ Email on Home, or 📧 Email on a customer card. Search a customer by name (or type any address), add a subject, then write it yourself or use ProPest Hub AI · Email Draft — give it the actual facts and tell it what to say ("tell them I'll be 30 minutes late Tuesday") and tap ✨ Write it for me, or 🪄 Polish my draft / ✂️ Make it shorter. Everything stays editable, then Review & Send.\n✒️ THE SIGNATURE IS AUTOMATIC: the logged-in sender's name, title, business email and work phone are combined with the company's logo, business name, mailing address, phone, general email, website and license information from Settings. You never retype it for each email.\n🏦 The invoice layout matches your real one: header + tagline, BILL TO / SERVICE ADDRESS, line items, INVOICE SUMMARY with TOTAL, ACH payment box, CHECK PAYMENTS box with your mailing address, Service Program Note and signature (phone/website/mailing address from Settings). ✨ ProPest Hub AI · Invoice Fill: paste the actual write-up and ProPest Hub AI fills supported fields only from those facts — one line item per priced service, program note written for you. AI never touches bank details; due date is always "Upon Receipt"; everything stays editable before save.
▶️ Start Service & 🌙 Evening Mode
Start Service is the whole visit as one checklist: photos → log service + 5E-14 → email record → mark paid → request review. Checkmarks come from real data. Technician Home shows only jobs assigned to that technician, and Start Service stays usable even if an optional list lookup fails; review-request history is limited to customers on that technician’s assigned jobs. Book the NEXT visit from the Schedule month view (where you can see each day's load) — booking was removed from the checklist on purpose. ➕ Add Another Property lives in the footer for on-site extras.
Evening Mode (🌙 on Home) is the end-of-day sweep: unpaid jobs, unfiled 5E-14s, unsent reviews, missing photos, unlogged mileage — each with a fix-it button. All green = day closed.
🏢 Commercial Compliance Center
Commercial Compliance is the property-level operating record for commercial accounts. Choose a customer property, then organize its Property Compliance Profile, IPM Program, observed site conditions / structural deficiencies, corrective actions, photo evidence, property timeline, binder index and printable audit / inspection package.
THREE DIFFERENT THINGS STAY DIFFERENT: verified regulatory references, customer/contract-required items, and best-practice guidance. A property profile never proves that a law applies. Florida public-food-service and federal food-manufacturing overlays point to verified official sources only when that profile is actually appropriate. EPA IPM principles are shown as best-practice guidance unless an explicit contract or verified rule makes a specific item mandatory.
FIELD FINDINGS: technicians see only commercial properties connected to their assigned work. Record what was actually observed, attach photos to the finding, and leave management to control customer-notified / acknowledged / scheduled / resolved / verified status. Customer acknowledgment requires the actual person/method; a resolved-verified item requires an explicit verification note. ProPest never invents either.
DIGITAL BINDER: the binder is an organized index over records that already live in their protected modules — service/application records, Field Compliance, reports, agreements, inspections, WDO records, device history and property/commercial files. It does not duplicate or move the regulated source records, and financial records are excluded by default. The Audit / Inspection Package summarizes what is actually recorded and can be printed/saved from the existing document preview.
PROPEST HUB AI: authorized users can ask about open deficiencies, corrective-action status, IPM plans and commercial property records. AI actions use the same canonical Commercial Compliance endpoint and the same tenant/role rules as the screen. AI may record an observed finding, management may confirm corrective-action updates or save an IPM plan, but AI may not infer legal applicability, customer acknowledgment or physical correction.
🔔 Business Notifications, 💬 Messages & Live Sync
🔔 Business Notifications are company-event alerts such as payments, proposal responses and reminders. The bell is shown to the Owner and to employees explicitly granted ALL BUSINESS NOTIFICATIONS. Ordinary office/technician accounts use 💬 Messages for employee conversations; the unread bubble stays on Messages, and each person can enable or check phone alerts from inside Messages without gaining access to the business inbox.
🔄 LIVE SYNC: an open app refreshes current operational data after a push, when it returns to the foreground/focus, when connectivity returns, and on a 60-second safety poll. If you are typing or a modal is open, it does not repaint over unsaved work. Schedule changes also send a best-effort targeted push to the affected technician; the server schedule is always the source of truth and the foreground/poll refresh is the fallback.
⚙️ Settings, Google & Backups
Settings holds business info (name, email, phone, website, mailing address for checks — all printed on invoices), drive cost, review template + configured Google/Angi/Nextdoor review links, ACH bank defaults, Google connection, and 💾 Backup. The Product Library keeps Quick Order through each product's saved Vendor URL. The built-in app logo is ProPest Hub unless the company uploads its own logo. Every backup slot shows when it was saved: the 💾 floppy-disk button in the header saves to TODAY'S weekday slot and stamps that slot's date and time (so each day's slot carries its own timestamp), while Most Recent updates automatically on every save. Restore from a weekday slot when rolling back; Download Backup is the copy you keep outside the app.
BACKUP RULE: before any experiment or restore, download your current data to your computer FIRST — that file is yours forever and can always bring you back. Restoring overwrites live data with the chosen snapshot, so never restore backward without the forward copy in hand.
Google Calendar: if events stop syncing, disconnect/reconnect in Settings. "Storage temporarily unavailable" errors are the data-safety lock protecting your data during a hiccup — retry, don't restore.
🛠️ Troubleshooting quick hits
• Chemical cost looks crazy → that product's mix rate / cost size, then ♻️.
• Google says connected but 0 events → disconnect/reconnect in Settings.
• Weather won't capture → NWS is flaky; type temp/wind manually.
• "Storage temporarily unavailable" → transient; the app retries and refuses to overwrite your data. Try again in a minute.
• Console errors mentioning background.js or rokt-icons.woff → browser extension noise, not the app.
• NEW VERSION / STALE SCREEN → GPT-v251 corrects the old dirty-state latch: login/search/filter activity no longer blocks automatic updates for the rest of the session. ProPest checks the no-cache build marker on start/focus/foreground and every minute, updates automatically when safe, and waits only for real current work (focused field, open modal, unsaved Settings, unsent thread reply or Outreach draft). Once that work is finished/left, the pending update applies automatically. The header version is still the final proof of what is running.