Example website Waterline Pool Service is not a real company. This page shows Tailgate Office’s NapkinPrice widget running on a contractor’s own site, quoting against real rates in a real account. Missed-call text-back Open the demo dashboard About NapkinPrice
Waterline Pool ServiceSeverna Park, MD · Route service on the Broadneck since 2011 (301) 555-0142
Weekly service, closings and openings · Severna Park and the Broadneck

Your pool, looked after every week, for a price you can see before you ring anyone.

Tell us how big it is, what you want us doing and what is hanging over the water. You get a monthly range in about a minute, the route charge already inside it. Then we come the same day every week, and you get the reading sheet whether you are home or not.

Same tech, same day, every week Chemicals included in the monthly price A reading sheet after every visit
Instant monthly price range
The route charge is in the price$60 a month for the drive, the truck and the test kit, quoted up front. Nothing appears on the invoice.
A month, not a visitEvery figure on this page is what you pay for a month of visits, chemicals included. We will not quote you per-visit and let you do the multiplying.
We say when we cannotClosings are booked from a list and openings from next season’s book. Neither gets a made-up number on this page.
No winter billingThe season runs from your opening to your closing. A covered pool in January is not a month we invoice for.
What we do

One route, four things, and only one of them is a price you can get online

A pool is a weekly job for five months and a handful of set-piece days either side of that. The weekly part prices cleanly and it is on this page. The set pieces are a date before they are a number, and this site says so instead of guessing.

Priced on this page

Weekly pool service (monthly)

Water tested and balanced, baskets emptied, the walls brushed, the floor vacuumed and the filter looked at. Same tech, same day, chemicals in the price.

Priced on this page

Salt pools and chlorine pools both

A salt cell makes its own chlorine, which is less to carry and less to dose — so a salt pool is cheaper on our route, and the form says so rather than us quietly pocketing it.

Priced on this page

Every other week, weekly, or twice a week

Fortnightly saves what it actually saves rather than half. Twice a week is a June-to-August arrangement for a pool that gets swum in hard.

Booked from a list

Pool closing and winterizing

There are about five weeks between the last swim and the first hard freeze and the book fills inside two of them. Tell us the pool and the cover and we come back with your date and your price together.

Booked for next season

Pool opening, booked for next season

We are not opening pools at the moment, so there is nothing honest to quote. What there is, is a place in the spring book — and a December caller really is ahead of a May one.

We come and look

Equipment, liner and green-pool recovery

A pump that has started to sing, a liner that has gone hard at the steps, six inches gone in a week, or water you cannot see the bottom of. Those get looked at, not guessed at.

How we price

By the month, by the water, and the route charge is already in the number

The form at the top of this page uses our real rates. It shows a range rather than a single number because a filter we have not seen and a pool nobody has brushed since August are things we can only settle standing beside them.

Tell us about the water

Gallons, what you want us doing, how often, how it is sanitized, and what is hanging over it. Five answers, and they are the same five we ask on the phone.

See the monthly range

Midpoint plus or minus 8%, with the $60 monthly route charge inside it. Nothing quotes under our $110 a month minimum. Anything over $450 a month gets a conversation instead of a number — past that you are buying a maintenance contract, not a route slot.

We start, and we tell you first

Travel priced from your ZIP, thirty days notice either way, and no contract. The season runs opening to closing, so a covered pool is not an invoice.

Service area

Based in Severna Park. A route is a geography, so the drive is on the price.

Your ZIP code sets the travel line on your estimate, and it is a monthly figure like everything else here. A route lives on stops per mile, so we would rather show you what the extra leg costs than quietly build it into everybody’s price.

  • Home loop: Severna Park, Pasadena, Millersville and CroftonZIPs 211xx
    No travel fee
  • Across the Severn and up the Broadneck: Annapolis, Arnold, EdgewaterZIPs 214xx and 210xx
    +$18/mo
  • The long legs: Baltimore, Catonsville, Laurel and BowieZIPs 212xx and 207xx
    +$35/mo
  • Anywhere else we can build a route toAny other ZIP we can reach
    +$55/mo and +6%
Notes for anyone evaluating the demo
  • Priced path. Pick Weekly pool service (monthly), then: 15,000 to 24,000 gallons, full service, once a week, chlorine tabs, spa No, trees near the fence, weekend No. Use ZIP 21146. The live pricing engine returns $189 – $222 a month with the disclaimer, and the lead lands in the demo account’s inbox. That is the pool this route runs more than any other: the $60 monthly route charge plus $35 for the water and $95 for the full service is $190 of dollars, and the leaf band (+8%) applies once to all of it, for a midpoint of $205.20.
  • Every number on this page is a month. The engine has no unit — it returns dollars, and only the words around them say whether they are dollars a visit or dollars a month. That is a real trap on a recurring trade, so the service is named “(monthly)”, its disclaimer opens by saying so, every help text that mentions money says “a month”, and every band on this page carries “a month” beside it. $189 is four times the going rate for one visit in this county, so the phrase is load-bearing rather than decorative.
  • The route charge is inside the percentage pool, and that is worth seeing once. qf_price() starts the additive figure AT the service’s base fee, so the $60 monthly route charge is marked up by the same +8% as everything else — about $5 on this job. It is small here on purpose; on a trade where a percentage can reach +30% it is not, which is why the tree question’s help text says the band is figured across the whole month rather than pretending it lands on one visit.
  • Percentages pool, they do not compound. Take the priced path and change the frequency to every other week: −38 and +8 add to −30%, not to a 0.62 × 1.08 that would land at −33% and about $6 lower. It comes back $122 – $144 a month. It is the version a homeowner can follow on the phone, which is why the engine does it that way.
  • A negative option that is a real saving, not a marketing one. A salt cell makes its own chlorine, so there is less to carry and less to dose, and the option is minus 8%. Priced path with a saltwater generator: $175 – $205 a month against $189 – $222. Chlorine tabs are the baseline and bromine is +10%.
  • One answer at a time, everything else held still. From the priced path: the pool sitting under trees instead of near them is $206 – $242; adding a spillover spa is $214 – $251; twice a week through the summer is $285 – $334; and a 25,000-to-40,000-gallon pool under trees is $244 – $287. All monthly.
  • Where the floor bites, and it bites more often than you would think. The bare job — smallest pool, water tested and balanced and nothing else, once a week, chlorine, open sky — works out at $60, well under the $110 a month minimum, so it quotes $110 – $119. Note the low end of the band is the floor itself, not 8% below it. A 20,000-gallon pool on chemistry-only lands at $102.60 and floors at the same $110 – $119, which is honest arithmetic: below a certain size the route stop costs what it costs whatever is in the pool.
  • A rule that raises the floor instead of adding a fee. Take that same bare job and answer Yes to “do you need a Saturday or Sunday visit”: the work is still $60, but the rule lifts the minimum to $185 and the quote comes back $185 – $200 a month. The route runs Monday to Friday on fixed loops, so a weekend stop is a trip made for one pool, and a bigger pool is already above that figure and never notices it.
  • Travel zone. Repeat the priced path with ZIP 21401 (Annapolis, across the Severn): $205 – $241. With 21228 (Catonsville, the long leg up): $221 – $259. Any ZIP outside the listed prefixes, whether 20874 (Germantown) or 75001 (Texas), falls to the catch-all zone: $251 – $294, the percentage first and then the flat fee. The fees are small in dollars because a route is not a trade that drives to a job and home again — but $55 a month on a $205 ticket is already a quarter of it, and that is the arithmetic behind not chasing single pools across the county.
  • Out of area. Use ZIP 99901. The visitor gets a polite decline instead of a price, and the lead is still captured.
  • Over the ceiling. Enter Over 40,000 gallons, full service, twice a week, bromine, spa Yes, under trees. The midpoint works out at $539.85, clearing the service’s $450 a month ceiling, so the widget routes to “we’ll take a proper look” rather than printing a number. That ceiling is where it is on purpose: past $450 a month you are not buying a slot on a residential route, you are buying a maintenance contract, and those get written rather than quoted.
  • THIS ACCOUNT IS THE FIRST IN THE ESTATE TO USE waitlist AND winter MODE, and it is the reason the demo exists. widget/quote.php:325 has known four modes for as long as the engine has existed — instant, site-visit, waitlist and winter — and the editor (members/quote-service.php:33) and the seeder (tools/seed-demo.php:269) have always accepted all four. Across the twenty-two fixtures and fifty-nine services that shipped before this one, every single service was instant or site-visit. Both new modes are exercised here, and neither prices: the mode is checked at step 6 of qf_price(), before the ceiling and before the “anything left to charge” clamp, and returns a fixed message. The lead is captured either way.
  • Waitlist mode: Pool closing and winterizing. Pick it and answer anything; there is no price at any point and the visitor sees “We’ve added you to the list — we’ll be in touch with timing and pricing.” Closing is the one thing this business genuinely cannot answer with a number: there are about five usable weeks between the last swim and the first hard freeze, three trucks get through perhaps twenty pools a day inside them, and the book for those weeks is full by the end of September. The question a homeowner ringing on 1 October actually has is not “how much”, it is “will anyone reach me before the water freezes in the skimmer and splits it” — which is a date. Printing a price with no date attached to it would be the dishonest option, and none of that service’s questions carries a pricing rule.
  • Winter mode: Pool opening, booked for next season. Same again, and the visitor sees “We’re booking this for the season ahead — we’ll reach out when it’s time.” From the day the cover goes on until the first warm week of April there is no opening to sell. There is a place in the spring book, which is the book a pool company actually fills over the winter, and that is what this mode captures.
  • The mode is a COLUMN, and nothing flips it by date. Said out loud, because it is the one thing about this demo that could be mistaken for magic. A quote_season row is a percentage and is read AFTER the mode is checked, so no season can turn a routing service into a pricing one. docs/trade-pages-plan.md section 9 records this as engine gap 3 and names this trade in it. The consequence is a real one and the owner of this account lives with it: in April they open the service editor and flip the opening to instant and the closing to winter, and in September they flip them back. Two edits, twice a year. This fixture therefore carries NO season rows at all — not because the trade is not seasonal, but because its seasonality is a shut season, and a shut season is a mode. A percentage invented to fill the field would have been the only dishonest number in the file.
  • Where the seasonality did land inside a priced service. One option on the frequency question is labelled “Twice a week, June through August”, and those months are in the LABEL because the engine cannot make an option available between two dates — a season is a percentage on the whole service and cannot reach one answer. Saying the months out loud on the option is the honest version of that limit, and it is the only place a date appears on a priced question in this fixture.
  • Site-visit mode, the third routing path on one page. Pick Equipment, liner and green-pool recovery and the visitor sees “For a job like this we like to see it first, so we’ll be in touch to book a quick visit.” The three things on it are the three a form cannot answer: an equipment fault is diagnosed at the pad, a liner or a plaster surface is measured off the water, and a green pool is not a visit at all but a programme — the filter runs around the clock for days and the number of return trips is decided by the water. This page never prints a dollar figure for any of them, because the fixture cannot compute one.
  • A number question that moves no money. On the site-visit service, “how many years since the pool was built or last resurfaced” is validated between 0 and 60 and priced at nothing. It proves the widget renders and validates a number that changes no figure, which is a legal and useful thing for a service to ask.
  • The photo question carries no rule. Photos never move the price — the engine skips them entirely. Nothing is uploaded either: on a demo the visitor can tick “I have photos I can send” and the lead records “Has photos to send, not uploaded”, which is the owner’s cue to ask for pictures on the call. Attaching the image itself is on the roadmap.
  • The missed-call text-back. The CallMitt page replays which of five messages a missed caller would get and why. Straight about where it stands: nothing on this platform delivers a text message yet, because there is no SMS gateway and no carrier registration, so the reply becomes an outbox row marked queued and stops there. The rules, the hours, the quiet hours and the opt-out handling are built and running.
  • The widget’s deep-end blue matches this site because the account’s key carries a theme color; the same script on an agency’s client site would carry the agency’s color.