· 9 min read
Annual Sales Rep Visit Planning: Frequencies, Account Weight and Route Optimization
How to build a year of field sales visits: account weight, visit frequencies, workload checks, territories, visit cycles and daily routes, with a simulation you can run.
A field sales rep might look after 150 to 600 accounts. Some deserve a visit every month, others twice a year. Every January (or at the start of each season) someone has to turn that list into a calendar: who to see, on which day, and in what order. Most teams still do it in a spreadsheet, with rules such as "Monday is the north of the territory".
This guide explains why this planning problem is hard, the data it needs, a step-by-step process, and how to simulate a visit cycle with a route optimizer such as AIRO. It applies equally to merchandisers, medical and pharmaceutical reps, key account managers and technicians doing preventive maintenance visits.
The context: many accounts, different weights, one calendar
Not every customer is worth the same time. Teams usually weight accounts by revenue, potential, strategic importance or the risk of losing them, often in A, B and C segments. The weight drives two things:
- Visit frequency: how many times a year the account is seen (for example 12, 6 or 2).
- Visit duration: a key account review takes longer than a quick check-in.
On top of that come practical rules: opening hours, a buyer only available on Tuesdays, a trade show week, holidays, a rep who starts from home and must be back by a reasonable time. The result is a plan where every decision affects the others.
Why it is a hard problem
Planning recurring visits is known in operations research as the periodic vehicle routing problem. It combines several decisions that are each difficult on their own:
- Which days each customer is visited, so that a monthly account is seen about every four weeks, not twice in one week and then not for two months.
- How the work is split between reps (territories) and between days, so that no day is overloaded while another is empty.
- In what order the visits of each day are made, to keep driving time down.
- Under which constraints: opening hours and appointment windows, visit durations, working hours and breaks, days off.
The numbers grow fast. The order of only 6 visits in a day has 720 possible sequences. Choosing which of 20 working days each of 70 visits goes on has 20 to the power of 70 combinations, a number with 92 digits, before any order is decided. Trying everything is impossible; good plans come from a sound process and an optimization engine for the parts that are pure combinatorics.
The data you need
| Data | For each | Why it matters |
|---|---|---|
| Address or coordinates | Account | Travel times |
| Segment or weight | Account | Frequency, duration, priority |
| Visit frequency | Account | Number of visits per cycle |
| Visit duration | Account | Fills the day more than driving often does |
| Opening hours, preferred day | Account | Time windows, fixed days |
| Home or base address | Rep | Where each day starts and ends |
| Working days and hours, breaks | Rep | Capacity of each day |
| Maximum visits per day | Rep | Keeps days realistic |
| Holidays, trade shows, training | Calendar | Days without visits |
The process, step by step
1. Segment and weight the accounts
Start from your CRM export. Give each account a segment (A, B, C) from revenue and potential. Keep the rules simple enough to explain to the sales team.
2. Turn weight into frequency and duration
Set a visit frequency and a typical duration per segment, then allow exceptions for specific accounts. For example: A accounts monthly for 60 minutes, B accounts every two months for 45 minutes, C accounts twice a year for 30 minutes.
3. Check the workload before planning anything
This is the step most often skipped, and the one that saves the most time. Take a rep with 180 accounts: 30 A, 60 B and 90 C.
- Visits per year: 30 × 12 + 60 × 6 + 90 × 2 = 900 visits.
- Time with customers: 360 × 60 min + 360 × 45 min + 180 × 30 min = 720 hours.
- Field days: 260 weekdays minus about 50 days of holidays, vacation, training and trade shows = 210 days, or 1,680 hours at 8 hours a day.
- That leaves 960 hours for driving and breaks: about 4.6 hours a day, for 4.3 visits a day on average.
If the territory needs more driving than that, the plan cannot work, whatever the routing. Lower some frequencies, shorten visits, or split the territory.
4. Draw or check the territories
When several reps share a region, territories should balance workload (visits plus driving), not just the number of accounts. Twenty accounts in a city and twenty spread over a rural area are not the same job.
5. Plan a repeating cycle
Instead of planning 210 days at once, plan a cycle, typically four or six weeks, that repeats through the year:
- monthly accounts appear once in each four-week cycle;
- accounts seen every two months are split into two halves, visited in odd and even cycles;
- twice-a-year accounts are spread over the cycles (about 14 per cycle in the example above);
- accounts seen every two weeks appear twice per cycle, in weeks 1 and 3 or 2 and 4.
In the example, one four-week cycle holds about 74 visits.
6. Optimize the days of the cycle
Assign each visit to a day of the cycle and order each day's visits, respecting windows, durations, working hours and breaks. This is the step where an optimizer makes the biggest difference: by hand, people tend to plan by area and miss better combinations across days.
7. Review, adjust and roll out the year
Check the cycle with the rep: customers who must be seen on a given day, long drives, overloaded days. Adjust, run it again, then repeat the cycle through the year, removing holidays and trade show days.
8. Re-plan when the day changes
A cancelled meeting or a new urgent visit should not break the week. Re-plan the rest of the day or the next days instead of rebuilding the cycle.
Three common approaches
| Approach | Strengths | Limits |
|---|---|---|
| By hand in a spreadsheet | Familiar, flexible | Slow, hard to balance, no measure of driving time |
| Fixed rules ("Monday = north") | Simple for everyone | Ignores frequencies, windows and real travel times |
| Optimization engine | Balances days, respects constraints, compares scenarios | Needs clean data and a clear process around it |
How to simulate a visit cycle with AIRO
To be clear about scope: AIRO plans routes; it does not generate an annual visit calendar on its own. What it does very well is the heart of the problem, the cycle of step 6, thanks to a simple modelling trick: each working day of the cycle is a "vehicle".
Simulation 1: one rep's four-week cycle
Prepare two files (you can download our templates):
- Accounts (one row per visit in the cycle): reference, name, address or coordinates, visit duration as Service time, opening hours as Window start and Window end, segment as Priority (A high, B normal, C low).
- Days (one row per working day): Vehicle = "W1 Mon", "W1 Tue"… up to "W4 Fri", the rep's home as Start address and End address, working hours, a lunch break with its window, and Capacity = the maximum number of visits per day (each visit counting 1).
Then choose Service visits as the type of stops and run the plan with shortest driving time as the objective and balance by working time, so the days are comparable. AIRO decides which day each visit goes on and the order of the visits, and it reports any visit that does not fit, with the reason. Leave a day out of the file for holidays or office days.
Keeping visits evenly spaced
Use the Skills column to fix the week and let the engine choose the day:
- give each day the skills of its week and weekday: "week1, mon", "week1, tue"… "week4, fri";
- an account seen every two weeks gets two rows: the first requires "week1", the second "week3";
- an account whose buyer is only there on Tuesdays requires "tue";
- once a cycle is validated, copy each account's day into the Assigned vehicle column of the next cycle: it stays on the same day every four weeks while the engine re-optimizes the rest.
Simulation 2: compare scenarios
The real questions are often "what if": five reps instead of four, 45-minute visits instead of 60, B accounts every three months instead of two. Run each variant on the same data and compare them side by side: driving time, working time per day, unplaced visits. To explore new territory boundaries, put the days of several reps in one plan, each with their own home as start address, and see which accounts the engine gives to whom.
Simulation 3: the day the plan changes
Choose Service visits as the type of stops when you create the cycle plan. Then, when a meeting is cancelled or an urgent visit comes in, re-plan the rest of the day from the current time and tick only today's day (for example "W2 Thu") under Who is working, so the rest of the cycle does not move. Finished and cancelled visits drop out (list cancelled ones as done), an urgent visit can be added from a file, and the rep continues from where they are. Visits that no longer fit come back as carried over, ready to download and add to another day.
Limits to keep in mind
- One plan handles up to 300 locations and 30 vehicles, so up to 30 days: a four- or six-week cycle per rep fits well; the year is assembled from cycles.
- Spacing is controlled at the week level (with skills) and by locking days between cycles, not by a "minimum days between visits" rule.
- When re-planning a day of the cycle, tick only that day: each "vehicle" of the cycle is a different day.
- Travel times come from the road network, optionally with typical traffic; they are not live traffic.
Download the templates
Two sample files reproduce the example of a rep based in Guelph, Ontario, with 76 accounts and 78 visits in a four-week cycle: the 74 visits of the example above, plus two key accounts seen every two weeks:
- Accounts for one cycle (CSV): visits with coordinates, durations, opening hours, priorities and week constraints.
- Working days of the cycle (CSV): 20 days from W1 Mon to W4 Fri, with home start and end, hours, lunch break and a limit of 6 visits per day.
Replace the accounts and the home address with your own, keep the column names, and import both files. Every column is described in the spreadsheet columns reference.
What to measure
- Visits per day and how evenly they are spread across the cycle.
- Driving time versus time with customers: the higher the share with customers, the better the territory works.
- The gap between the longest and shortest days.
- Unplaced visits and their reason: too many means the frequencies or territory do not fit the time available (step 3).
Try it with your own accounts
Create an account, import the two templates to see the method on the example, then replace them with an export from your CRM. Each plan is priced from its size before you launch it, and you can compare as many scenarios as you need.