Product

Seven stages between the file and the windshield.

Nothing here is a module you buy separately, and nothing here is a model you have to trust. Every stage is arithmetic a rep can argue with, which is the only kind of plan a rep will actually follow.

STAGE 01

The file you already have

A vendor territory workbook, as it arrives. The header row is detected rather than assumed, columns are mapped by suggestion and then shown to you for correction, and every row is validated before anything is committed. Nothing is written until you have seen exactly what a commit will create.

  • Column mapping is suggested from the headers, including the vendor vocabulary a target file uses rather than a generic CRM’s.
  • Duplicate detection returns a score, not a boolean. A name-only match caps at “review”; only corroboration from an address, phone or email pushes it to auto-skip.
  • Existing accounts are recognized. These files mark one by putting the practice name in the NPI column and leaving the surname and street blank — miss that and the most valuable records in the territory import as unnamed providers.
  • Geocoding is cache-first and works offline. No map key is required to plan a territory.
territory_1010111_targets.xlsx539 rows
A sample of a vendor territory workbook: NPI, surname, specialty, city, ZIP, weighted decile and a volume column.
NPILastSpecialtyCityZIPWtd DecileVolume
1447‑••••••—EndocrinologyHouston77024105,562
1902‑••••••—Family PracticeKaty7749481,204
Cypress Metabolicblankblankblank77429—812
1336‑••••••—Internal MedicinePearland775847341
1558‑••••••—Nurse PractitionerSugar Land77479697
Illustrative. NPIs are masked. Row three is an existing account — this file format marks one by putting the practice name in the NPI column and leaving the surname blank, which is the shape the importer has to recognize.

STAGE 02

Scored, then tiered — and the vendor gets the biggest vote

The vendor already did the hard part. Their weighted decile ranks each prescriber’s weight inside this territory, and it is 45 of the 100 points — dominant on purpose. We rank inside a decile, we do not second-guess it.

Script volume is log-scaled, and that is the load-bearing choice on this page. 5,562 prescriptions is not sixteen times more interesting than 341, and on a linear scale a handful of mega-prescribers flatten everyone else to zero — which turns a 539-name target list into a five-name one.

  • Four tiers with the frequency each one promises: weekly, twice-monthly, monthly, and a Coverage tier that promises nothing and is worked when the route already passes the door.
  • Two qualitative signals promote a record outright: an existing sample, and a prescription of the on-label drug. Both mean the conversation has already started.
  • Tier sizes are yours. “Top 50” is a metro-sized number, not a law — a 90-name territory wants a Top 25, and the display name follows the size.
  • A specialty nobody has characterized is slightly penalized, never zeroed. One unfamiliar label should not silently bury a cohort.
Why this provider is worth a TuesdayScore 87 / 100
  • Weighted decilethe vendor's own ranking45
  • Primary volumelog-scaled30
  • Secondary volumelog-scaled10
  • Specialty liftconfigurable per vertical10
  • Territory fitcost to serve5
These are the shipped weights, not an example — they are the defaults in DEFAULT_SCORE_WEIGHTS. The two volume slots take whichever columns your file carries — prescriptions, tests ordered, specimens received — and the specialty table is configurable, so the weights hold whatever the list counts. Two flat bonuses sit outside the hundred: five points for an existing sample, five for an on-label prescription.

Stage 03

A weekday always means the same place.

This is the structural decision the whole plan rests on. Monday is one patch, Tuesday is another, and scheduling happens inside a zone rather than across the metro.

Why zones at all

A weekly provider can only be seen weekly without the rep crossing the city twice if their patch comes round on a fixed day. Pin the zone to the weekday and the cadence becomes drivable instead of aspirational.

Geography decides, capacity breaks ties

Balancing on workload alone produced a Friday running two towns twenty-four miles apart. A day the rep cannot drive is not balanced, it is evenly bad. Any move that pushes a zone past its spread limit is rejected outright.

When nothing has room

The overflow goes to the zone that stays most drivable, not to the emptiest one. Sending it to whichever zone was lightest is what produced a twenty-six-mile Tuesday the first time round.

Both of those rules exist because their naive versions shipped and failed. Pure clustering, meanwhile, produced a Tuesday carrying twenty cadence commitments — eleven field hours — against a Friday carrying six. Tidy zones, absurd workload. Every weekday gets the same number of hours, so the zones have to hold roughly the same amount of work.

STAGE 04

The cadence is honored exactly, or the plan says it could not be

Weekly means weeks one, two, three and four. Twice a month means weeks one and three, or two and four — never one and two, because two touches in consecutive weeks and then three weeks of silence is not “twice a month” to the person being visited.

  • Week-sets are not alternated down the list. Doing that looks balanced on paper and put nineteen commitments on one Tuesday against eight on another, because the tiers do not interleave evenly. Each record takes whichever legal combination is currently least loaded for its weekday.
  • When a zone’s cadence commitments alone overrun the clock, that is recorded as a signal about the zone — not silently trimmed to make the page look tidy.
  • Everything overdue in the app is overdue against the tier’s own interval and nothing else. There is no second, invented benchmark.
Cadence commitment · 539 providers274 committed calls / month
Call tiers, how many providers sit in each, the promised frequency, and the monthly commitment that creates.
TierProvidersFrequencyCalls / month
High Potential314× / month124 calls / month124
Top 50502× / month100 calls / month100
2nd Top 50501× / month50 calls / month50
Coverage408opportunisticno commitment—
Illustrative counts, real rules. Tier sizes are configurable — “Top 50” is a Houston-sized number, not a law. Coverage promises nothing on purpose: you stop there when the route already passes the door.
Call plan · four weeks · territory 1010111216 calls
MonSugar Land11121112
TueHouston West12121212
WedKaty / Cypress910910
ThuThe Woodlands10111011
FriPearland / Clear Lake11101110

Calls scheduled per day. The goal band is 10–12; the number is whatever the clock and the geography actually allow.

Illustrative. One zone per weekday, four weeks deep. Wednesday is the honest part: that zone is spread, so its days land at 9 and 10 rather than 12, and the plan says so instead of writing 12 and hoping.

STAGE 05

The day is built against a clock

Ten to twelve calls a day is the goal, and it holds where the geography allows it. The day itself is bounded by time: drive time between offices, about twenty-two minutes per call, and a lunch that eats an hour. The count falls out of that.

Some days land at twelve. Some land at eight. The plan says which, per day, before the week starts — because a plan that pretends otherwise is a plan the rep quietly abandons in week two.

The routing page has the whole argument, and a calculator

Field day · Tuesday · Houston West11 calls
  • Window08:00 – 14:20
  • Drive32.5 mi
  • Deferred2
Tuesday’s zone, routedMonday through Friday each own one contiguous zone. Tuesday’s is drawn as a map rather than a box because it is the one being shown. The faint gray lines are the real road network for the territory and the heavy line is the route the router returned through all eleven stops, in call order. The two stops that did not fit the clock are marked separately, off the corridor.MONWEDTHUFRIAliefWestchaseSharpstownSugar Land2 miTUE2 deferred
  1. Westheimer EndocrinologyHigh Potentialstart of day08:00
  2. Briar Forest Family MedicineTop 501.6 mi · 4 min08:26
  3. Gessner Park Internal MedTop 503.1 mi · 7 min08:56
  4. Dairy Ashford Primary Care2nd Top 503.3 mi · 9 min09:26
  5. Eldridge Metabolic HealthHigh Potential3.6 mi · 10 min09:58
  6. Lunch — Memorial Drive Internal MedStop 8, 0.6 mi off stop 7 · zero detour11:50
  7. 6 more stops through 14:20
  8. Kirby Endocrinology · Bissonnet Internal Med9 and 7 miles off the cluster. Adding both ends the day at 16:40 — rolled to next Tuesday, highest cadence debt first.
A real routed day, on real roads. Generated from a sample territory workbook, not a customer’s — but the line on the map is the road geometry the router returned, not a drawing of one. The clock is arithmetic you can check: 11 calls at 22 minutes, a 60-minute lunch, and the 78 minutes of driving the router costed for 32.5 road miles is a day that ends at 14:20.

STAGE 06

Then it leaves the software

The measure of this product is whether a rep can act on it without opening it again. So the day exports: the whole tour into Google Maps or Apple Maps, twelve events into a calendar, or a CSV for the manager who wants a spreadsheet.

  • Map links are chunked at ten waypoints and overlap by one stop, so the second link starts where the first ended.
  • Coordinates travel, not address strings. A practice’s postal address frequently resolves to a suite across the plaza from the door the rep needs, and the geocoded point is the one the optimizer planned around.
  • Calendar events carry a fifteen-minute alarm and the stop’s own detail, so the phone is enough.
Hand it to the rep4 formats
  • Google MapsChunked at 10 waypoints, overlapping by one stop
  • Apple MapsSame tour, native handoff on iPhone
  • Calendar (.ics)One event per stop, with a 15-minute alarm
  • CSVThe whole day, for the manager who wants a spreadsheet
Coordinates travel, not address strings — a practice's postal address often resolves to a suite across the plaza from the door the rep needs.

STAGE 07

Automation, generated from the import and shipped switched off

The import knows your tiers and their intervals, so it can write the rules that keep the territory worked once the import is forgotten: a cadence-lapse rule per tier, an intake rule for new targets, an ownership rule for the ZIPs in the territory.

Every one of them arrives off. Each shows, in plain English, what it does and how many providers it would fire for right now — a live evaluation, not an estimate. Arming automation because somebody uploaded a spreadsheet is how a VP finds out about their own automation from their inbox.

  • Nulls never coerce. A provider who has never been visited has not “stopped ordering”, and no condition reaches a match by accident.
  • A condition can be undetermined as well as true or false — and when it is, the screen says so out loud instead of guessing in whichever direction is convenient.
Automation generated from the importAll off
  • High Potential cadence lapse — 7 daysIf a High Potential provider goes 7 days without a logged call, put a task on whoever owns them.would fire for 31 providersOff
  • Top 50 cadence lapse — 15 daysSame rule, at the Top 50 interval.would fire for 50 providersOff
  • New target intakeA provider landing in one of this territory's ZIPs gets an owner and a first-detail task.would fire for 0 providers todayOff
Every generated rule ships switched off. Arming automation because somebody uploaded a spreadsheet is how a VP finds out about their own automation from their inbox. The counts are live evaluations, not estimates.

And the CRM parts

It is still a CRM underneath

The planning layer is the reason to switch. The rest has to be there, or the planning layer is a toy sitting beside a system of record.

Practices, providers, opportunities

Accounts, contacts and deals in the vocabulary the field uses — practices and providers, not generic objects. Three pipelines, because a physician can start ordering next week, a group takes a quarter and a health system takes a year, and running those in one pipeline makes every forecast meaningless.

Activity that costs one tap

A call logged from the stop it belongs to, on a phone, in a parking lot. Activity capture that takes a desktop form is activity capture that does not happen.

Lists, filters and exports everywhere

Column selection, filters, sort, group-by, saved views, bulk select and CSV export on every list — built once as shared components rather than per object.

Territories and ownership

ZIP-based ownership rules generated from the import, arriving off, so nothing starts reassigning records the day after a file lands.

Adelo CRM is configured per sales motion. The examples on this page use a diagnostics vertical — deciles, script volumes, physician offices — because that is the motion it was built against. The object labels, personas, pipelines, tiers and scoring weights are all configuration. If you sell a device into the same offices, the shape holds and the vocabulary changes.

Bring a territory. We will run all seven stages on it.

You get back the scored file, the zones, the four-week plan and the routed days — the same artifacts a rep would get. It is a better proof than anything on this page.