Field Operations Industry, chapter 13 of 26
Licenses & Permits
Who may do what, where: business, applicator and solicitor licenses, overlapping jurisdictions, computed compliance, capabilities, supervision and renewals.
A field business can only do business where it's allowed to, through people who are allowed to do it. The allowances come in layers: the state licenses the business and the trade, a county or city may require its own permit to sell door to door, and each license belongs to a person, covers a category of work, and expires. A technician who services a home with a lapsed license, or a sales rep who knocks in a city without its permit, exposes the company to fines, voided contracts and, for a pest control company, a regulator's interest in every record that person touched.
Most companies track this in a spreadsheet kept by someone in the office, and find the gaps after the fact. This chapter is about the alternative: licensing modeled as data, compliance computed from it, and every action that needs a license checked against it at the moment it happens.
Three Things Get Licensed#
Licenses attach to three different things, and a working system needs all three:
| Licensed | Examples | Who issues it | Typical consequence of a gap |
|---|---|---|---|
| The business | A pest control business license per location; a contractor license for HVAC or plumbing | The state, sometimes the city | The location can't operate or advertise |
| The person, for the trade | Certified applicator, technician, apprentice; journeyman or master trade license | The state | The person can't perform the work |
| The person, for the activity | Solicitor or peddler permit for door-to-door sales | The city or county | The person can't sell there |
Pest control in Texas shows how specific the business and trade layers get. The Department of Agriculture licenses structural pest control businesses per location, branch offices included, and a business may not advertise or solicit work until it has a license and a certified applicator in each category it offers. Each location designates a responsible certified applicator who can't serve as one for any other licensee or location, and the business may not operate without one; if it loses that person, it has 20 business days to request a temporary hardship in writing. People come in tiers: an apprentice registers within 10 days of starting work, has 12 months to pass the technician exam, and completes classroom and on-the-job training per category before working alone; a technician works under a certified applicator's supervision, meets that applicator in person weekly, and completes 8 hours of training each year; a certified applicator has passed the general and category exams. Other states structure it differently, and other trades have their own versions (state contractor licenses for HVAC, plumbing and electrical, with journeyman and master levels), but the pattern holds: a business license per place, and a person's license by category and level.
The activity layer is municipal. Cities and counties license door-to-door solicitors and peddlers, with application details, fees (often per year or per day), background checks, display of the permit, restricted hours, and rules about homes that post "No Soliciting" signs. Some require bonds. The data an application asks for can be surprisingly personal: identity documents, physical description, citizenship and conviction history, which makes the permit file some of the most sensitive data a field company holds (Sensitive Data).
Green River and Its Limits#
Some municipalities go further than permits. A Green River ordinance, named for Green River, Wyoming, which adopted one in 1931, prohibits uninvited commercial solicitation at private residences. The Supreme Court upheld one in Breard v. Alexandria (1951), reasoning that a city may protect residents' privacy even at a cost to a legitimate business. Later cases narrowed how far cities can go with noncommercial speech: in Watchtower Bible & Tract Society v. Village of Stratton (2002) the Court struck down a permit requirement as applied to religious, political and similar canvassing. Commercial solicitation remains the most regulable kind, and the rules vary city by city. Counsel decides what each ordinance means; the system's job is to represent the answer (prohibited, permitted with a permit, permitted without one, restricted hours) for each jurisdiction and enforce it.
Jurisdictions Overlap#
Every address sits in several jurisdictions at once: a state, a county, usually a city or township, sometimes a special district. Each can impose its own requirements on the same activity, and they don't nest neatly; cities cross county lines, and unincorporated areas have no city at all.
So model jurisdictions as boundaries, not as fields on an address:
- A jurisdiction has a type (state, county, municipality), a name, and a boundary polygon.
- An agency issues licenses within a jurisdiction (a state's department of agriculture, a city clerk).
- The jurisdictions for an address are those whose boundaries contain its point, found with a spatial query.
Boundary data comes from census and commercial sources, and it changes: cities annex land, and the change matters to the people knocking there. Version boundaries with effective dates and refresh them on a schedule. Precompute which jurisdictions intersect each sales territory and service area (Territories & Capacity), so that assigning someone to a territory can tell you, before their first day, every jurisdiction where they'll need something.
The Compliance Model#
The model that holds up separates what's required from what someone holds:
| Record | Holds |
|---|---|
| Requirement | A license, permit or registration an agency requires; its type and category |
| Requirement by role | Which roles it applies to (applicator, technician, sales rep), and whether it's enforced |
| License | A person's license: agency, number, category, issue and expiry dates, status, and proof (the permit document, uploaded) |
| License to requirement | Which requirements, for which roles, a license satisfies |
| Exemption | A documented exemption from a requirement for a person, with a reason and an expiry |
| Block | A jurisdiction where a role may not work at all, regardless of licenses |
From those records, compliance is computed: a person is compliant in a jurisdiction for a role when every enforced requirement that applies is met by an active, unexpired license mapped to it, or by an unexpired exemption, and the jurisdiction isn't blocked. A jurisdiction with no enforced requirements for the role is compliant by default.
Keep "enforced" as a flag on the requirement-to-role link rather than deleting requirements you don't enforce yet. During a rollout you'll load every requirement you know about, mark the ones you're ready to enforce, and turn the rest on as the data behind them gets clean.
Compliance Is a Projection#
Compliance changes when anything it depends on changes:
- a license is added, renewed, revoked or expires;
- an exemption is granted or expires;
- a requirement is added or its enforcement turned on;
- a person is assigned to a new team or territory, adding jurisdictions;
- a boundary changes.
Most of these are events; expiry is the one that happens with nobody touching anything. So compute compliance as a projection, a table of person × jurisdiction × role with the result and the reason, recalculated on each change and by a daily job that marks licenses past their expiry date expired and recalculates everyone affected. Publish a change event whenever someone's compliance changes (Events), with the reason (license expired, exemption ended, requirement updated), so the services that act on it (sales, scheduling, the technician app) update their own copies without querying the licensing service on every tap.
Keep the history. When a regulator or a customer asks whether a technician was licensed on a date two years ago, the answer has to come from the projection as it was, not as it is: store each compliance change with its effective time, the same way application records snapshot the license number at the time of work.
Capabilities, Not a Yes or No#
"Compliant" is too coarse to act on. A sales rep who holds a city's solicitor permit may be allowed to knock and take an appointment, but closing a contract may need the permit's proof on file, or a state registration the rep doesn't have yet. A technician may be licensed to apply general pest products but not termite treatments or fumigation. Translate compliance into capabilities, the specific actions a person may take in a jurisdiction:
- For sales: knock, set (book an appointment or a sale for someone else to close), close (sign the customer).
- For service: service a category of work, supervise others in it, apply restricted products.
Each capability is granted by a rule over compliance. A rep with every enforced requirement met, and proof uploaded, might get set and close; a rep with requirements met but no proof might get set only; a rep who isn't compliant gets nothing. A rep who can set but not close is still productive: the agreement is saved as set-only, and someone who can close finishes it (Signing the Agreement).
The Strictest Jurisdiction Wins#
At any one address, the capabilities a person has are those that every jurisdiction containing the address grants. A state with no solicitor requirement doesn't override a city that demands a permit; the city's rule applies inside the city.
Check this at the moment of action, by location: when the rep opens an agreement at a door, the app sends the address (or the device's position), the server finds every jurisdiction containing it, and returns the intersection of capabilities. Do it server-side with current data; the app can cache results for the area a rep is working, but a cached "yes" should expire within the day. Check it at planning time too: when a manager assigns a rep to a canvassing area or a technician to a route, warn about every jurisdiction in it where the person lacks a capability, so the gap is fixed before the morning rather than discovered at the first door.
Decide deliberately what happens when the system knows nothing about a person. During a rollout it's tempting to treat "no compliance records" as unrestricted, so that the check can ship before every license is entered. That's acceptable as a transition with a date on it. After it, unknown should mean not allowed for any enforced role, or the check protects nothing.
Supervision and Shared Compliance#
Some jurisdictions let a person work under someone else's license. Federal rules let a noncertified applicator apply restricted-use pesticides under the direct supervision of a certified applicator, with training, label access and a way to reach the supervisor immediately (see Regulated Materials). State rules for technicians and apprentices are often similar in spirit: the Texas apprentice can't work alone until trained, and the technician works under a certified applicator's supervision. Where a jurisdiction allows it, the same idea can apply to other permits.
Model this as shared compliance: a jurisdiction (or requirement) marked as shareable, and a supervision relationship between a person and the license holder. When it applies, the supervised person is compliant through the supervisor's license, and the reason says so. Put the supervisor on every record where it matters: an application record names the supervising applicator and their license, and supervision that requires presence (a certified applicator physically on site) should be visible on the route as two people at the same stop.
Watch the edges. A supervisor's license expiring takes everyone sharing it out of compliance at once, which is exactly the case the daily recompute exists for. A supervisor reassigned to another team breaks the relationship for the people left behind.
Expirations and Renewals#
Most licensing failures aren't fraud; they're expirations nobody noticed. Every license has a date, and the work of renewing it (continuing education hours, a fee, an exam, paperwork to an agency) takes weeks. Build the reminders as a schedule, not a hope:
- Reminders before expiry to the person and their manager at fixed intervals; my default is 60, 30, 15 and 3 days out, daily from then on.
- A renewal report each month listing everything expiring in the next 90 days, by branch, for whoever coordinates licensing.
- Continuing education tracked as hours against each license's annual requirement (8 hours a year for a Texas technician), so renewal isn't blocked by a requirement found late.
- Onboarding deadlines as tasks with dates: a new hire's apprentice registration within the state's window (10 days in Texas), an exam before the apprentice card expires.
- Business-level licenses with a designated holder per location, and an alert when that person leaves: a termination event from HR should immediately flag every location where they were the responsible applicator.
Seasonal sales teams make all of this harder. Hundreds of reps may start in the same few weeks, each needing permits in several cities, each city with its own forms, fees, background checks and processing times. Treat permits as a pipeline per rep and jurisdiction (not started, submitted, approved, rejected, expired), with the permit document uploaded as proof, and someone on each team (a licensing coordinator) who owns moving it along. The capability rule above turns the pipeline's state directly into what the rep can do at a door.
Where It Plugs In#
Licensing is a service other domains consult, not a screen in the back office:
- Sales checks capabilities at the door and when assigning territories (Door-to-Door Sales).
- Scheduling treats compliance as an availability rule: a technician can only be offered for work in areas where they're compliant for the work's category (Territories & Capacity, Booking Appointments).
- The technician app blocks completing work the person isn't licensed for, and stamps license numbers onto records (Proof of Service).
- HR feeds hires, terminations and role changes, which add and remove people from the projection.
- Reporting answers "who was licensed for what, where, on which date" from history.
The licensing service owns the requirements, licenses and the computed projection; everything else subscribes to changes and keeps a local read model, the pattern in Platform Architecture.
What This Means for the System You Build#
- Jurisdictions as versioned boundaries, found by spatial query from an address, precomputed against territories.
- Requirements, licenses, exemptions and blocks as separate records, with enforcement as a flag on the requirement-to-role link.
- Compliance as a projection recomputed on every change and by a daily expiry job, publishing change events with reasons, and keeping history by effective time.
- Capabilities derived from compliance, checked server-side by location at the moment of action, and at planning time.
- Intersection across every overlapping jurisdiction, so the strictest rule applies.
- Shared compliance and supervision as explicit relationships that appear on records and routes.
- Scheduled reminders, renewal reports and CE tracking, and HR events that flag lost license holders immediately.
- Permit pipelines for seasonal reps, with proof uploaded and sensitive applicant data protected and minimized.
References#
Specifications
- 40 CFR 171.201: Direct supervision of noncertified applicators, supervision, training and communication requirements under a certified applicator
- 40 CFR 171.107: Recertification, applicator certifications expiring at most five years after issuance
Reference
- TDA: Structural Pest Control Business, a license per location, the responsible certified applicator, and the 20-business-day hardship request
- TDA: Technician and Apprentice Licensing, registration within 10 days, the 12-month apprentice card, training hours, supervision and 8 hours of annual training
- Breard v. Alexandria, 341 U.S. 622 (1951), upholding an ordinance against uninvited door-to-door commercial solicitation
- Free Speech Center: Green River Ordinances, the name's origin in Green River, Wyoming, in 1931
- MRSC: Regulation of Peddlers, Solicitors, Temporary Merchants, municipal permits, fees, background checks, hours and the constitutional limits, including Watchtower v. Stratton