A pest control app is a treatment record that happens to have a map.
Every stop ends in two things: a treated property and a written account of what was put down, where, how much and by whom. A pest control app that gets the second one right is worth building. One that only moves jobs around a calendar is field service scheduling with a pest-shaped logo, and that already exists. The records are where the risk sits, because a state inspector, a food safety auditor or a customer's lawyer can ask for them years after the technician has forgotten the visit.
This page covers what has to be in a treatment record, how a service route is really built, why numbered bait stations change the data model, and what happens when the phone is under a house with no signal.
Check your ticket against the recordThe short version
The visit is the work, but the record is the product.
Almost every disappointing app in this category is built around the wrong unit. It models a job, gives it a status and a note field, and assumes the treatment details are something the technician will type in somewhere. Then a regulator asks what was applied at that address in March and the answer is a photo of a signature and the word 'quarterly'.
Build it the other way round. The application is the record, the device is a thing with a history, and the schedule is what arranges them. Everything else on this page follows from that.
What has to be on the record
Start with the part that is not up to you. Pesticide application records are regulated in the United States, and for most businesses the rule that binds you is written by your state lead agency. EPA runs certification directly in the areas of Indian country covered by its own plan, and it publishes the field list there, which is the clearest public statement of what a commercial applicator's record is expected to hold.
Under that plan a commercial applicator's record of a restricted use pesticide application includes the name and address of the person it was applied for, the location of the application, the size of the area treated, the specific crop, commodity, stored product or site it was applied to, the year, month, day and time, the brand or product, the EPA registration number, the total amount applied per location per application, and the name and certification number of the certified applicator who made or supervised it, plus the name of any noncertified applicator who made it under supervision. Those records have to be available for inspection and copying by EPA representatives for at least two years from the date of use.
Read that list as a data model and two things fall out. It is per application, not per visit: one stop can be three products in three places, and a single 'chemical used' box on a ticket cannot hold that. And the certification number belongs on the record itself, stamped at the moment of saving, rather than looked up from a technician profile two years later when the number has changed or the technician has left. A treatment log app that gets those two things right is already ahead of most paper.
Then check your own state, because many ask for more than the federal floor: records for every application rather than only restricted use products, longer retention, a copy left with the customer, or a particular form. Store the fields as data rather than as a printed layout and a new state form becomes a rendering job instead of a rewrite.
EPA, applicator recordkeeping requirements under the EPA plan
Try it
Does your ticket hold the record
Tick every field your service ticket captures for each product applied. The list is the one EPA publishes for commercial applicators under the certification plan it runs itself.
0 of 9 fields
Still missing: Customer name and address, Location of the application, Size of the area treated, Crop, commodity, stored product or site, Year, month, day and time, Brand or product name, EPA registration number, Total amount applied per location, Applicator name and certification number.
The route is built from windows, not mileage
A service route looks like a travelling salesman problem and behaves like a calendar. Recurring accounts sit on a cycle, monthly, every other month, quarterly, and each visit has a window around its due date rather than a fixed day. The next visit has to anchor to the date the last one was actually completed, not the date it was planned, or the cycle drifts by a few days every round until a summer account is being serviced in October.
An exterminator route app earns its place on access, not distance. A stop carries a gate code, a dog in the yard, which door the technician uses, the restaurant that can only be treated after close, the food plant that wants night service, the tenant who needs 24 hours notice. Ordering by driving time and ignoring all of that is how a day ends with three stops nobody could get into. The sequencing itself is a solved problem and worth reading about on its own as a route planning app question. The constraints are the part no vendor can supply for you.
The other thing a pest control service app has to carry is the callback. A free re-service inside a warranty period is not a new job, it is evidence about an old one. Attach it to the original treatment and the callback rate per product, per technician and per pest becomes visible. Leave it floating as its own job and the single number that tells you whether the work is holding disappears into the schedule.
Numbered devices change the data model
Commercial accounts are not serviced room by room, they are serviced device by device. Exterior rodent stations, interior multi catch traps, insect light traps and pheromone monitors are numbered, fixed to a point on a site map, and checked in a set order. A visit is a round of those devices with a result for each: activity or none, bait taken, trap damaged, station blocked by a pallet, monitor replaced.
This is why a visit level note fails. The question a plant manager asks is not what happened on Tuesday, it is why station 14 has had activity on four of the last five rounds, which is usually a door or a drain rather than a bait problem. Answering that needs a row per device per visit, with the device as a real record that has a location, an install date and a history of its own. A photo attached to the bad results is what turns an argument into a fact.
The shape is the same as a safety inspection app: a fixed list of points, one result each, a photo when the result is bad, and a report somebody else reads. Food safety auditors ask for the device map, the service history and the trend across visits, and the operations that pass without drama are the ones where all three fall out of the records the technician was filling in anyway.
Crawlspaces, basements and the end of signal
The technician is under a house, in a basement, in a walk-in cooler or deep inside a metal warehouse. The signal goes. If the form needs a network to save, the record gets written in the truck twenty minutes later from memory, and that is exactly how the amount applied becomes an estimate and the time of application becomes a guess. The required fields do not get less required because the phone had one bar.
Offline has to be the normal case rather than the fallback. Write every entry to a database on the device first and sync afterwards, which in an Expo project is what SQLite is there for: a local database queried through a SQLite API and persisted across restarts of the app. Photos are the part that breaks, because they are large and they fail quietly. Queue them with a retry and show the technician an honest count of what has not reached the server yet, since a green tick that means 'saved on this phone' and a green tick that means 'saved for good' should not look the same.
Stamp the time on the device at the moment of the action and keep it as its own field, because the record needs the time of application and a sync timestamp is a different number. Keep the sync time as well and you can explain a gap later. Everything past that point, conflict handling, retries and what the app should do when it is opened after a week in a drawer, is a longer problem: the guide to building for a crawlspace with no signal is where that starts.
What each approach gives a technician
| Option | A record per application | Works with no signal | History per device | Fits your own service rules |
|---|---|---|---|---|
| Paper service tickets | if the form has the fields | Yes | in a binder | Yes |
| Spreadsheet plus phone photos | once somebody types it up | No | No | Yes |
| Generic field service app | No | varies | No | No |
| Off-the-shelf pest control platform | Yes | usually | Yes | generic |
| An app you build | Yes | Yes | Yes | Yes |
Building one around your own service rules
Pest control platforms exist and some of them are good. They are priced per technician per month and shaped around a branch with a call centre, a sales team and a manager who wants dashboards. A two truck operation pays for that shape and still cannot add the one field its biggest commercial account wants on every ticket, or the checkbox its state form needs.
Newly is an AI app builder. You describe the app you want, including the exact fields a record has to carry, and it writes a real React Native and Expo project you own, running it on a cloud simulator while it builds. It costs $25 a month and there is no free plan. Getting it onto a crew's phones matters more here than it sounds: iOS ships through TestFlight and App Store Connect using your own Apple Developer account, and Android publishes to Google Play internal testing from the Deploy tab or builds a standalone APK. There are no built in payments, so billing stays wherever it already is.
Be honest about what an app does. It does not make anyone compliant, and it does not discharge a licensing duty that sits with the certified applicator. What it does is make the correct record the easiest thing to produce at four in the afternoon, which is the only reason records ever get filled in properly. Newly does not ship a backend either, so where the data lives is a decision you make deliberately rather than one you inherit.
Questions people ask about pest control apps
Under the certification plan EPA runs itself, a commercial applicator's record of a restricted use pesticide application covers the name and address of the person it was applied for, the location, the size of the area treated, the crop, commodity, stored product or site, the year, month, day and time, the brand or product, the EPA registration number, the total amount applied per location per application, and the name and certification number of the certified applicator who made or supervised it. Your state may require more, so treat that list as a floor.
Describe the record your technicians actually have to write
Write down every field a ticket must carry, the devices on your biggest account and the rules about who can be visited when, then build the app around those instead of around a calendar.
Start building