Holiday Lights Estimates

Build, price, send, accept, and schedule Holiday Lights estimates in the current V2 workflow, with the preserved V1 visual-designer reference.

Intermediateownersales repUpdated 2026-09-24

Holiday Lights Estimates

Current V2 workflow

Current V2 can build and sell a scope-based Holiday Lights estimate on web and in the approved native mobile layout. The web builder includes the usable property-image visual designer and V1-style Good, Better, and Best proposal packages, although it does not yet include every V1 designer capability described later on this page.

Holiday Lights uses the current year-to-year and discounted three-year pricing choices described below. A separate rent-versus-buy pricing model is intentionally not part of the V2 product scope; it should not be treated as a missing release requirement.

Create a Holiday lights estimate from Estimates, a lead, or a client. The single-screen builder intentionally replaces V1's estimate wizard. It lets you:

  • add roofline, window, door, tree, wreath, garland, shrub, pole, pathway, and

custom lighting zones using the same business names as V1;

  • optionally name each zone for the customer, such as Front roofline;
  • enter measured Linear feet for length-based zones or Quantity for

item-based zones—the builder changes the input automatically from the selected lighting area;

  • choose a plainly labeled flat, standard, steep, or very steep roof pitch;
  • choose year-to-year or discounted three-year pricing;
  • review server-calculated one-year and three-year annual prices plus the

calculated Holiday Lights deposit;

  • use the existing map or photo measurement tools, when enabled for the

workspace, to fill eligible linear zones;

  • build separate Good, Better, and Best choices, copy a completed

package as the starting point for another, and add customer-facing package descriptions without using the removed estimate wizard;

  • price each package with the organization's active Price Book. Select a

catalog item, then edit its customer description, quantity, unit, or unit price for that quote. The saved row is a quote snapshot, so later catalog edits do not change this estimate and an arbitrary catalog selection is not limited by the legacy fourteen-zone list;

  • use Import drawing strands to review saved drawing lines before adding

them to the quote. An explicit designer length can prefill a linear_ft quantity; a manually entered length is required when a linear-foot strand has no saved estimate. Strand or each pricing keeps its billable quantity separate from the drawing's estimated physical length. If you change the catalog unit before applying selected strands, the selections stay selected and their quantities are reseeded for the new unit; a saved drawing length fills linear_ft, while an unknown length stays blank. Choosing another catalog item with the same unit preserves the entered quantities;

  • open a Street View image for the estimate's saved service address, frame the

camera before drawing, draw colored multi-point C9 or permanent-light paths, place wreaths or mini-light areas, and associate each design item with one of the estimate's priced zones;

  • turn a saved package drawing into a Winter Wonderland nighttime property

preview in Classic, Colorful, or Elegant style, then review the image before sending;

  • choose the proposal's payment terms and expiration;
  • on the web, manage the proposal's saved Photos, lighting Design, and

Winter Wonderland mockup media, including whether each item is enabled, its caption, and its order;

  • on the web, choose an Installation week, Removal timing, requested

removal date or note, and Storage included preference; and

  • review and send the estimate by email, text, or both; and
  • resend or update the allowed proposal status from the estimate workspace.

The visual design saves automatically with the same guarded estimate draft as the priced zones. V2 stores only bounded, normalized drawing coordinates and camera settings—never a Google key, arbitrary image URL, or large image data inside the draft. The property image is regenerated through a signed-in, location-scoped, rate-limited server route. A saved camera position without any drawn strands or wreaths stays draft-only and is not sent as an empty design.

The delivered proposal uses the shared customer quote and portal workflow. The customer can review the saved Holiday Lights scope and price and, when a visual was drawn, see that exact immutable design revision above the package choices from either the delivered quote link or the signed-in customer account. The customer property image is loaded through the quote token. The server uses either the service address or the private uploaded-image id frozen into that revision; no provider key, storage path, or office-only pricing detail is exposed. The customer can then draw a signature, accept the proposal, and pay a configured deposit when the workspace's Stripe account is ready. Acceptance creates the Holiday Lights install job and a takedown job targeted to the saved removal month. If the selected online payment terms cannot be priced, the office review keeps the amount visibly unpriced and asks the office to resolve the terms instead of guessing a deposit. If a requested online deposit cannot be collected because payments are not configured, the send flow warns the office and follows its existing safe payment-term fallback instead of promising checkout.

Proposal media, payment terms, and seasonal handoff

In the web estimate builder, under Proposal Media, choose the saved property photos, lighting design, and Winter Wonderland mockup that belong in the customer proposal. You can enable or hide an item, edit its caption, and change its order. An item that is explicitly hidden or removed stays out of both the customer proposal and its PDF. Older drafts that have no media settings keep their existing legacy media behavior.

Select Add photo to upload one or more property photos at once. Each completed upload joins the current proposal list immediately, including when the list was intentionally empty; existing captions and hidden choices stay in place. If an upload is uncertain, keep the selected file in Retry uploads and retry the same photo operation. The picker stays disabled while uploads are unresolved; multiple selected files remain queued when one needs a retry. This queue lives in the open page, so finish or discard pending uploads before navigating away, reloading, or closing the tab. Use Add visual for a saved design or Winter Wonderland mockup. Drag items or use the move controls to change their order, then edit captions or hide, show, and remove items as needed.

The deposit shown in the office review, customer proposal, and PDF follows the selected Holiday Lights payment terms. No deposit, a fixed amount, a percentage, or Full payment is displayed from that saved selection; CE Pro does not replace it with a generic deposit percentage. If terms are not yet selected or cannot be priced, the office review asks for the terms instead of guessing an amount. The signed selection remains authoritative for acceptance and checkout.

In the web Schedule preferences, select the Monday-through-Sunday Installation week pair. Choose After January 1 or Leave up longer for removal, then add a requested removal date or note when the customer has a specific preference. Storage included records the saved storage choice. These preferences request timing; they do not book an exact install or takedown day. After acceptance, the linked install and takedown work carries the saved installation week, customer-facing notes, internal crew notes, and removal/storage preferences. Customer notes remain visible to the customer; crew notes remain internal. Takedown work stays targeted to the removal month and uses the saved season when no requested date is present.

The accepted package also remains the authoritative crew scope when an optional area name was left blank. New proposals replace that blank with the lighting area type, such as roofline eave. Older accepted proposals use the same safe type fallback in crew checklists and mobile scheduling instead of borrowing mutable work lines from a different package.

The current builder is not yet the complete V1 visual sales tool. It now supports server-resolved Street View or a private uploaded property photo, colored roofline strands rendered as individual C9 bulbs or compact permanent lights, V1 preset and custom repeating bulb-color sequences, five V1 wreath sizes, mini-light areas, editable selected-item colors, quantities, and priced-zone links, completed-item movement, precise deletion, 1×–4× canvas zoom, a customer-controlled outlet/cable power plan, independent customer-facing Good/Better/Best visual packages, draft recovery, Winter Wonderland nighttime previews, the web customer proposal, and the downloadable customer PDF. It does not yet save Satellite/3D Satellite imagery as a design background. V1's browser-capture implementation would export and persist Google Maps content outside the Maps service, including in customer proposals and PDFs, which Google's current platform terms prohibit. This is a documented platform exception to the V1 baseline until a separately licensed imagery provider explicitly permits long-term storage and commercial proposal/PDF use; it is not a removed product requirement. Reps can use Street View or upload a customer-owned property, drone, or licensed aerial image now.

Draw the current V2 visual

  1. Open a draft Holiday lights estimate. A service address enables Street

View, but is not required when you upload a property photo.

  1. In Visual designer, either upload a JPG, PNG, or WebP photo up to 10 MB,

or use Zoom in or Zoom out while the automatic property-facing view is active. To rotate, choose Start manual aim at north, then use Turn left or Turn right. Aim at house restores the automatic property-facing view. The browser reduces the original to a landscape WebP below the hosting platform's request limit. The server independently decodes it, removes embedded metadata, and normalizes it again before storage. The file stays in the existing private Supabase storage boundary; malformed or oversized image payloads are rejected before storage. The upload control supports JPEG, PNG, and WebP for this workflow. Only the authorized estimate, quote token, or customer account can load it. Every upload receives an immutable server-generated id, so another browser tab cannot replace the bytes behind a saved drawing. Before external storage begins, the durable event pipeline records every authorized upload. A completed storage write starts its one-hour autosave grace, while the earlier authorization schedules a separate two-hour fallback for uploads whose storage response or follow-up transaction is interrupted; drafts that are never sent are still covered, and send checks again. These delayed checks protect in-flight uploads. Replacing an uploaded background or switching back to Street View schedules another check, so later-detached photos are not retained indefinitely. Cleanup locks the estimate and rechecks the current legacy design, every draft package, every saved proposal revision, and every immutable proposal-option design before it durably marks each still-unused photo as unavailable before asking private storage to delete it. Each draft save takes the same estimate lock and revalidates the uploaded photo in the active design and every Good, Better, and Best package. If any referenced photo has entered cleanup, the whole save stops instead of leaving a package pointed at deleted bytes. Replacing or detaching a photo in any package schedules the same safe cleanup check. A late save can never adopt a photo after deletion starts, even if storage deletes the bytes but its response is lost. Every historical proposal image remains available. Uploads stop as soon as the estimate is no longer a draft.

  1. In Proposal packages, choose Good, Better, or Best before

editing zones or drawing. Each card owns its own priced zones, property drawing, power plan, and optional customer description. Better carries the recommended badge. Use the copy action on another package to duplicate the active package's complete scope and design; replacing a package that already has scope requires confirmation. Copied zones and visual items receive new internal ids so later edits remain independent. Unfinished empty packages are not offered to the customer.

  1. Choose Draw C9 strand or Draw permanent lights, the matching priced

zone, and a Color sequence. C9 bulbs hang below their wire; permanent lights use tighter, compact points mounted directly on the track. The V1 presets include warm white, cool white, warm white/red, warm white/red/green, red/green, and multicolor. For a custom repeating pattern, enter up to 12 letters using W (warm white), C (cool white), R, G, B, O, or P and choose Use pattern. You can apply the same controls to a selected saved path later. A selected path also exposes Light style so C9 versus permanent lighting can be corrected without redrawing it.

  1. Click each corner of the roofline, then choose the matching Finish

action. A finished C9 or permanent-light path appears in the summary and saves with the estimate draft.

  1. Choose Place mini-light area, enter how many strands cover that bush,

tree, or column, select the matching priced zone, and click each location. The saved customer visual shows a dense group of individual bulbs instead of a generic marker, plus the exact number of strands assigned to that area.

  1. Choose Place wreath, choose a 24, 30, 36, 48, or 60-inch size, then

click each wreath location on the property. A linked wreath zone saves the same size for customer pricing and the material SKU; changing the size in either the zone or selected-item controls keeps the drawing and price in sync. An older or malformed draft with an unsupported wreath size safely uses the standard 36-inch wreath in both the canvas and pricing, keeping placement, the material SKU, and price consistent.

  1. Use Undo point for an unfinished roofline point, Remove last strand

for the newest completed strand, or Remove last wreath for the newest wreath. Remove last mini-light area removes only the newest mini-light placement. You can also select a strand chip below the image to remove that specific completed strand.

  1. Choose Move items, select a completed strand, mini-light area, or wreath, and drag it into

place. The selected item receives a visible teal highlight. Use Delete selected when that exact item should be removed. The selected-item panel can also change its bulb sequence and priced zone, plus wreath size or mini-light strand count where applicable. Wreaths can link only to wreath zones so a visual size cannot be quoted through an unrelated roofline item. Relinking a wreath adopts the destination wreath zone's configured size; it does not silently change the destination zone's price or other wreaths. The same canvas supports Place wrapped column · 3 strands, Place landscape bushes · 1–2 strands, Place tree wrap · Outside wrap, Place entry garland · By strand, and Place walkway lighting · C9 stakes. Choose a compatible Priced zone before clicking the property. Choose Move items to reposition an accent, then use Edit selected to change its light color, priced zone, or Quantity/Linear feet. Changing this quantity changes the active package's quote. Delete selected removes the drawing accent while leaving its priced zone and quantity in the quote; adjust the zone separately when the quoted scope should change. If a package copy cannot complete because an accent is missing or linked to an incompatible zone, the editor explains what to fix and keeps the current package scope available.

If a browser interruption stops an autosave, a browser copy from the last 24 hours can offer Restore changes or Discard browser copy while the estimate is still a draft. If the saved estimate is newer, use Reload latest to continue from the newer saved version or discard the browser copy; the builder does not silently overwrite newer saved work.

  1. Use Canvas view to zoom from 1× through 4× when precise roofline or

accent placement is easier close up. Pan left, Pan right, Pan up, and Pan down move the visible frame without changing saved coordinates; Recenter returns the current zoom level to the middle of the property. Drawing, selecting, and moving items remain aligned at every zoom level; the full visible wreath or mini-light area remains selectable when zoomed in.

  1. Use Place power outlet for each known 15- or 20-amp outlet and record

whether it is GFCI protected. Use Draw cable run for each planned cable path and finish it just like a light strand. Timer location, timer model, and private crew notes stay with the estimate. Turn on Show outlets, cable runs, and timer details on the customer proposal only when the customer should see the power plan; crew and outlet notes remain private. Outlets and cable runs can also be moved or deleted precisely. A design can contain up to 30 outlets and 50 cable runs; the canvas stops adding items at those limits so the draft remains saveable. A customer-visible power-only design—including one with only timer details—is retained when the estimate is sent, while a hidden plan exposes no outlet, cable, or timer detail through the public proposal. Public drawings retain the complete safe design shape so the customer visual does not disappear when private note fields are removed.

  1. In Winter Wonderland, choose Classic, Colorful, or Elegant

and select Generate nighttime preview. Generation uses the clean saved property image as its source and the active package's exact drawing as a placement guide. It cannot run while the current design is still saving or when the package has no drawn lighting. Review the result before sending. Generating a new image replaces only that package's preview; Good, Better, and Best remain independent. Editing that package's property drawing clears its older preview so the proposal cannot show an image made from stale placement instructions. An interrupted request can be checked safely without paying for the same request twice. The monthly paid-generation ceiling is shared across the entire workspace, including sibling locations; a location-limited office member does not receive a separate allowance.

  1. Finish the priced zones in each package you intend to offer, review

delivery, and send the estimate. Each non-empty Good, Better, or Best package becomes a separate immutable customer choice with its own total, deposit, itemized scope, and property visual. A generated nighttime preview is used when present; otherwise the deterministic saved drawing remains the visual. Unfinished empty packages are not offered. Selecting a package updates the delivered quote, signed-in customer account, and option-aware PDF. The signed choice is the only package used for acceptance, checkout, install, and takedown jobs. If an old property image cannot be retrieved, the PDF still renders the retained scope and pricing rather than failing.

The approved mobile Holiday editor remains intentionally compact and does not add separate package controls. If a rep edits Holiday zones on mobile for an estimate that already has web-authored packages, those zones update the package currently selected on the estimate; the other Good, Better, or Best choices remain unchanged. A drawing link to a zone removed on mobile is detached so a later proposal cannot silently quote the old scope. The saved mobile price, immediate mobile Send check, sent customer option, and crew scope therefore continue to use the same package.

An office-authored Holiday draft's saved setup premium and customer price adjustment are included in the mobile Estimated total, including on seasonal renewals.

Adding a new mobile zone saves its unfinished row while the rep enters a quantity, but it does not replace or remove the existing web package choices. Completed zone edits continue into the selected package immediately while the unfinished row is temporarily excluded, matching the price shown on the phone. This keeps an immediate Send on the same scope and price instead of sending the package's older values. Once the new row has a quantity, the next save includes it too. Temporarily clearing an existing quantity does not detach that zone's saved drawing; only removing the zone does. Mobile labels are safely bounded when copied into the customer package, without changing its price. The phone also recognizes that server-side package projection as its own saved revision, so normal follow-up edits do not encounter a false stale-draft conflict. These safeguards do not change the approved mobile layout.

After a customer signs a package, both the customer PDF and the authenticated office Preview/Download PDF use that accepted package's saved property design, even when a different package was active when the estimate was originally sent. A package-selection link cannot substitute another package's visual after acceptance. A package with no saved drawing also stays blank in the signed-in customer account instead of borrowing a different package's design.

When that package has a Winter Wonderland preview, the immutable proposal, signed-in customer account, and PDF prefer the generated nighttime image. The image remains private and is returned only after the server revalidates the signed-in office member, customer account, or public quote token against the matching estimate and sent revision. Storage paths and provider credentials are never placed in the proposal.

Applying a map, manual, or photo-assisted measurement to a Holiday zone writes the measured quantity into the selected package and its compatibility zone list in the same saved transaction. The recalculated price therefore cannot fall back to the package's older quantity if the page closes before another autosave.

Once the first strand, mini-light area, wreath, outlet, or cable run is placed, the property-image controls lock so the property cannot move underneath the saved drawing. Remove the saved design items before replacing the uploaded photo, switching back to Street View, or reframing the Street View image.

Street View coverage is not available for every property. If the image route cannot find useful imagery, adjust the camera before drawing or upload a current customer-owned property photo.

The approved native mobile UI remains frozen. Current mobile Holiday Lights editing uses its existing compact zones, term, and roof-pitch controls; any visible mobile visual-designer change requires explicit approval before it is built.


V1 visual-designer parity reference

The remainder of this page records the richer V1 Holiday Lights experience as the required feature and workflow baseline for V2. References below to the three-phase workspace, property-image drawing, packages, mockups, seasonal administration, and other richer controls describe V1 parity requirements unless a capability is listed in the current V2 section above. V2 keeps the approved removal of multi-step estimate wizard navigation; useful design capabilities return inside a single-screen workflow.

The V1 Holiday Lights experience combines visual design tools with automated pricing. A rep can trace gutter lines on satellite or street-view imagery, assign lighting zones, and generate a proposal with installation, materials, and removal costs.

If an owner assigns a brand under Settings -> Brands -> Module Brand Assignments, every new Holiday Lights estimate uses that identity by default. An originating lead's saved brand takes priority. This works the same way in the office web app and native mobile app: the customer preview, portal, sent email and text, PDF, contract, invoice, and payment stay with the selected holiday brand.

On mobile, the builder uses three focused steps: Property, Design & Packages, and Review & Send. Customer, property, estimate type, editable title, and salesperson are selected before the builder opens. The customer's default property is preselected, but the rep can choose or add another property.

The office web builder now follows the same three-phase structure. It opens in a dedicated Holiday Lights workspace with Setup, Design, and Review across the top instead of the former nested Design, Bundle, and Generate Quote tabs. The web Design phase keeps Satellite, Street View, property-photo tracing, Winter Wonderland, and Good/Better/Best selection together. Review shows full Monday-through-Sunday installation-week ranges, removal timing, customer notes, internal crew notes, contract pricing, preview, and send controls without asking for the customer information a second time.

The web Design phase uses the same direct package designer as mobile rather than embedding the older map-and-zone editor. Choose Good, Better, or Best, then draw C9, mini-light, or permanent-light strands directly over the large property image. Wreaths, power outlets, and cable runs are placed on that same canvas. Strands render as individual glowing bulbs, wreaths use a recognizable lit-wreath shape, selected items expose exact quantity, unit price, name, and color-sequence controls, and the power layer keeps timer and customer-visibility settings with the quote.

Canvas controls on web and mobile support 1x–4x zoom while preserving accurate placement coordinates. Undo and Delete operate on the active design or power layer. Generated Winter Wonderland images and copied custom packages have their own delete controls. Wreaths include 24, 30, 36, 48, and 60-inch size choices. Mini lights are placed as individual lighted areas for bushes, trees, or beds; each area has its own editable strand quantity and strand price. On mobile, Move items lets a rep press and drag any placed strand, wreath, or mini-light area; the new position is committed when the rep releases it.

On mobile, Save draft and Review estimate appear after the design content in the normal page flow instead of covering the canvas in a fixed footer.

Winter Wonderland validates the already-composed PNG request using its bounded PNG header rather than a native server image library. This keeps generation compatible with the production serverless Linux runtime.

The Property step supports Camera, Gallery, Satellite, and Street View sources. Satellite is the default map view. Street View opens as an adjustable preview: the web designer first calculates the bearing from Google's panorama position back to the geocoded property, so its initial frame faces the selected house instead of an arbitrary compass direction. Reps can then drag to turn or tilt the camera, use the zoom and fine-position controls, then select Use this view to lock the exact frame into the estimate. The preview is not added to the design until it is locked. The same control is available in the mobile and web designers.

On desktop, 3D Satellite opens Google's photorealistic satellite scene with orbit, tilt, rotation, and zoom controls. After positioning the property, select Snapshot & design and choose This tab in the browser share prompt. The app crops the visible 3D map into a still design canvas; the screen-share stream stops immediately after capture and is not stored.

The Design & Packages step combines products with the visual designer. Reps can tap to place wreaths, power points, timers, and other individual items, or draw roofline and mini-light strands. C9, mini-light, wreath, permanent-light, and power-run items use exact configured prices. The selected color sequence can be changed before or after drawing, including custom patterns such as warm white, warm white/red, or repeating multi-color sequences. Calculated quantities and prices remain editable by the salesperson.

Traced strands render as individually spaced glowing bulbs instead of solid highlight lines. Placed wreaths render as lit green wreaths with a red bow. Use Winter Wonderland to generate a snowy blue-hour version of the selected property image; the editable vector lighting design stays layered above that background so changing a strand does not require regenerating the snow scene. During generation, the drawn bulbs and symbols are treated as placement guides, not finished pixels. The renderer replaces them with realistically scaled bulbs, wire, clips, and wreaths snapped to the nearest roof edge, gutter, fascia, column, doorway, window, or other mountable surface. It corrects small drawing offsets and removes the guide graphics so decorations do not float over the house or sky. The marked strand, mini-light, and wreath counts are scope-locked: strands stop at their drawn endpoints, and unmarked rooflines, trees, landscaping, and neighboring structures remain unlit.

Winter Wonderland also applies professional-installation photographic rules without feeding another property's photo into the edit. Medium-quality final rendering keeps distant C9 bulbs small and teardrop-shaped with restrained bloom and visible fascia between sockets while avoiding unrequested lights copied from an unrelated example. Wreaths use irregular evergreen branches, needle texture, natural depth and shadow, sparse micro-lights, and a proportionate fabric bow rather than a perfect glowing ring. These rendering rules never replace the customer's house, camera angle, placement, or selected scope.

The generator separates its two image roles. The clean property image is the edit target and the salesperson's marked canvas is a placement-only guide. This prevents the large guide dots or wreath symbol from being baked into the finished photograph. Both web and mobile send the clean property and marked canvas separately.

The placement image used for generation is intentionally different from the friendly editor overlay. Web and mobile convert strands into individually colored, numbered centerlines with explicit square endpoints and convert wreaths into a small cyan center and size marker. The generator must account for every numbered strand separately, including short side edges and upper ridges, without imitating the editor's oversized bulb dots or circular wreath icon. When a ridge and front upper gutter are both marked, their badges explicitly say RIDGE and UP GUTTER so the generator keeps both parallel strands on their own architectural edges. Short SIDE runs are bounded by their endpoints and cannot be stretched down the siding. Unmarked walls remain naturally dark rather than receiving an invented decorative wash. The generation request also carries an explicit strand inventory. If no SIDE strand exists, the preview is told that no vertical or side-wall lights are allowed; when a ridge and upper gutter coexist, both must remain visibly separate in the finished customer image. Multi-point strands retain every drawn corner and segment. A short diagonal leading into a ridge, for example, cannot be shortened away while the longer horizontal portion is rendered. Mobile captures both the clean property and placement guide from the same zoomed canvas frame, so roofline coordinates remain aligned when the salesperson zooms into the property before generating. Mobile Street View sends Google the required location parameter and prefetches the initial property frame, so opening the adjustable camera does not wait on AI generation. A failed image request stops after 12 seconds and offers a visible retry instead of leaving an endless spinner. The mobile 3D Satellite picker uses a tilted, rotatable satellite map. Drag, pinch, rotate, tilt, or use the fine-position controls, then save the exact framed map as the durable drawing canvas. The mobile app prepares an upload-sized preview automatically and allows the longer processing window required by image generation. Draft synchronization only updates the saved estimate identity when it actually changes, so the builder remains still while a rep types, draws, or waits for the preview.

Winter Wonderland uses a fast landscape preview render. While it is active, the designer shows a visible percentage, elapsed time, and the current Preparing, Rendering, or Finalizing phase so the rep can distinguish active generation from a timeout. If generation or private storage is still finishing, web and mobile keep checking the same request instead of starting a second billable image. Generated files are stored beneath the current organization’s private storage prefix and customer access is signed for that same organization. The web panel restores the selected Winter Wonderland style with that request scope, so reopening the editor keeps Classic, Colorful, or Elegant instead of silently returning to a different style. An interrupted or ambiguous network response, an in-progress result, or a storage delay keeps the same preview request available for a safe check or retry. A terminal result that cannot be confirmed is shown explicitly as Generate a new preview. Mobile keeps the pending request identity with the estimate, so leaving and reopening the builder resumes the same generated image. One attempt is capped at four minutes; it no longer leaves an indefinite spinner on a permanent storage failure.

Private Winter Wonderland images opened by the mobile canvas include the signed-in user's bearer token and active organization id. This allows the image to load through the same tenant-scoped storage route as the rest of the app; the canvas no longer falls back to a gray area after a successful generation.

On web, double-click the final point to finish a strand. On mobile, long-press the final point. Move items lets a rep drag an entire completed strand, wreath, or mini-light area to a new position on either platform. Mini-light areas render as dense organic light clusters rather than circular spirals.

Good, Better, and Best packages are shown by default. A package can be selected as-is, then adjusted before delivery. The Review & Send step includes the recommended three-year agreement with the office-configured discount (15% by default), a higher one-year price, a 50% approval deposit, the remaining balance due at installation, installation week ranges, removal after January 1, and standard customer and internal crew notes. Email and SMS copy can be reviewed and edited before sending.

To build package tiers quickly, open the completed starting package and select Copy to Better or Copy to Best. Mobile and desktop copy the complete lighting design, custom scope, measurements, color sequences, and exact prices into the named destination, then open that destination so the rep can add the upgrade items. Better and Best keep their original names, ordering, and recommendation setting. If the destination already contains work, CE Pro asks for confirmation before replacing it. The separate duplicate action remains available when a fourth custom package is actually needed.

Installation timing is selected from labeled Monday-through-Sunday week ranges for the current season. The office chooses the exact day later when the route is finalized.

Native mobile Holiday Lights saves use the authenticated estimate sync. The server verifies the workspace, user, strict zone and add-on payload, saved revision, and, when the estimate is being sent, customer-delivery requirements. It recalculates material, labor, add-on, zone, and estimate totals before atomically saving the shared estimate, canonical line items, and proposal mirror. The mobile app cannot insert or update Holiday Lights proposal rows directly.

Use Preview customer proposal before sending. The preview shows the selected package drawn over every property image included in the workspace, the separate Winter Wonderland rendering when one was generated, package scope, pricing, deposit, and customer-facing notes. The delivered customer proposal reads the same versioned workspace, so mobile-created estimates retain the mock-up, Winter Wonderland view, and all other selected images. Internal crew notes are never included in this customer view.

After saving, the mobile estimate record keeps the same proposal evidence easy to review. Install & takedown preferences shows the selected installation week, standard after-January-1 takedown timing, and any requested date or note. Attachments shows each saved property mockup with its selected-package lighting overlay and the separate Winter Wonderland render. Notes shows the customer preferences and internal crew notes with clear labels.

The approval and signature flow follows the saved contract term. A three-year selection is labeled as a three-year holiday lights agreement, displays the selected amount per season, and shows the standard one-season price for comparison; a one-year selection is labeled as a one-season estimate. Holiday Lights approval does not offer or require Suds Club. Suds Club remains limited to eligible residential estimates and cannot block a Holiday Lights approval. When a camera or gallery image uploads after an offline save, its private remote URL is also reconciled into the workspace media entry before customer delivery; the proposal never depends on a file URI that exists only on the rep's phone.

After the holiday lights quote is saved, Proposal Options A/B/C prepares its shared estimate and opens the option builder. Use it for choices such as one-year versus three-year scope, different display packages, or optional service combinations without sending separate proposal links.

Editing a Saved Holiday Lights Quote

Open the linked estimate when a customer asks to change an existing quote. In the active Good, Better, or Best package, use Price-book quote items to add an item from the organization catalog or import reviewed drawing strands. Edit the customer-facing description, quantity, unit, or exact unit price directly in the row. Draft changes autosave and the server recalculates each rounded line total, package total, deposit, and customer preview from the saved rows.

Older packages without quote rows continue using their saved lighting-zone calculator until you add a catalog row. The builder asks you to review an editable snapshot of the existing pre-discount/setup scope before switching that package to price-book pricing; accepting the prompt keeps the old scope as a row and applies package pricing rules once.

Changing line items does not reopen or remeasure the canvas. The saved property image, drawing points, and measurements remain intact. Use the two design actions only when the display itself needs to change:

  • Edit design opens the saved drawing without remeasuring it. Move, add, or

remove lights while keeping the existing measurements until you deliberately change them.

  • Remeasure design opens the saved design and makes the drawing the source

of truth again. Changes to measured roofline drawings recalculate their linked quantities and quote total.

The saved Street View, satellite snapshot, or uploaded property image reopens in the same locked canvas position. Back, Cancel, and a successful save return to the linked estimate instead of the Holiday Lights queue.

The Price-book quote items panel stays separate from the legacy lighting-zone references used by the designer. Drawing imports are explicit: repeated opens do not duplicate a source line, and an existing imported row keeps manual description, quantity, unit, and price edits. A package can contain up to 50 quote rows; the importer reports that limit instead of silently dropping rows. Private Winter Wonderland previews resolve through the currently open CleanEstimate environment, so a test or branch preview can load the generated image using the signed-in office session.

Holiday Lights quotes now use one exact regular price. The queue, estimate line items, review step, public proposal, and delivery email no longer show or derive a low/high range. Older quotes use their stored regular price, and their existing linked estimate line items populate the editor the first time they are opened.


Step 1 -- Customer & Property

Enter the customer and property information.

Screenshot placeholder
Step 1 showing customer type selector and client details form

Customer Type

Select Residential or Commercial at the top of the form. This determines the pricing tier and proposal template.

Screenshot placeholder
Residential/Commercial toggle at the top of the form

Client Details

Search for an existing client or enter new information.

FieldDescription
Customer NameFull name of the homeowner or business contact
EmailFor proposal delivery
PhoneFor SMS delivery
AddressGoogle Places autocomplete
City / State / ZIPAuto-filled from address selection
Screenshot placeholder
Client details form with address autocomplete dropdown visible

Click Next to continue.


Step 2 -- Design & Quote

The mobile Design phase opens with a compact property workspace based on the approved estimate screen. It includes:

  • a property image with Photo, Satellite, and Preview modes;
  • one customer and full-address card with Call and Text actions;
  • compact Color, Bulb style, and Zones controls;
  • slim scope-of-work rows with real saved measurements and prices;
  • installation, removal, and storage preferences;
  • a design-segment summary, current estimate total, and Preview at night;
  • Save draft and Continue to products actions.

Tap Edit design to open the complete zone editor for adding, changing, or removing roofline, tree, bush, pathway, fence, window, and custom zones. The night preview applies a visual treatment to the saved property photo; it does not claim to be an AI-generated lighting placement.

The larger web designer has three tabs: Design Canvas, Bundle, and Quote Preview. The sections below describe that expanded workspace.

Screenshot placeholder
Step 2 tab bar showing Design Canvas, Bundle, and Quote Preview tabs

Tab 1 -- Design Canvas

The design canvas is where you trace light lines and define zones on the property.

Screenshot placeholder
Full design canvas view with satellite imagery, drawing tools on the left, and design summary on the right

Canvas Views

The left panel has three canvas tabs:

TabWhat It Shows
SatelliteAerial view of the property from above
Street ViewAdjustable ground-level view; pan, tilt, zoom, then lock the exact frame
Property PhotoUpload a customer photo of the home

In the mobile builder, a newly captured property photo is copied into durable storage for the signed-in user and workspace. It can remain queued while the phone is offline. After reconnecting, the authenticated estimate-photo pipeline uploads it and saves the returned HTTPS address into both the local builder and the canonical Holiday Lights estimate before customer delivery continues. Replacing the image uses the same idempotent removal queue. A missing or changed local file stops for review instead of publishing a device-only URI.

Switch between tabs to trace lines from different angles. Selecting Street View starts camera adjustment first; drawing remains disabled until Use this view locks the selected angle.

When the satellite property is not centered correctly, click Move image. The editor loads Google's supported high-resolution satellite image with a wider real source area around the property. Drag across the property, then click Done moving. Selecting Move image also closes a failed 3D panel so the satellite canvas never remains trapped behind it. Drawing coordinates, placed products, power-plan markers, and generated winter previews stay aligned with the adjusted image. Use Reset image position to return to the original centered view and 1x zoom. The selected image position and zoom are saved with the workspace.

Click 3D Satellite when the roof is easier to understand from an angled view. Drag to orbit, tilt, rotate, and zoom, then choose Snapshot & design. When the browser asks what to share, select the current tab. If 3D imagery is unavailable, the editor shows Google's specific initialization error. The site security policy follows Google's Maps CSP requirements for its WebAssembly renderer and required tile connections, and the scene becomes interactive as soon as Google mounts it instead of waiting indefinitely for a final rendering event. If the browser cannot capture the tab, cancel back to the regular satellite canvas and continue editing there. Hovering or focusing 3D Satellite begins loading the 3D library before the click, while property lookup and library loading run together.

The estimator continuously keeps a browser recovery draft. Refreshing or accidentally closing the page restores the customer, current step, drawings, quote items, workspace, and satellite framing. Successfully saving the estimate clears that temporary recovery copy.

Drawing and pricing are optional and independent:

  • Turn off Add new drawings to quote on web, or select Visual only on

mobile, when lights should appear in the design without adding a priced line.

  • Select an existing drawing and turn off Include drawing in quote pricing

to convert it to visual-only artwork.

  • Click Add quote item without drawing to enter a quantity and exact price

without placing anything on the property image. This lets you build and send a complete priced quote without creating a drawing.

Quoted items on web and mobile come from the active shared price book. The builder opens on Holiday Lights products and recognizes entries such as C9, wreaths, minis, garland, pathway stakes, and permanent lights. Organization overrides replace inherited default rates. A selected price-book product keeps its catalog id, unit, and current base rate on the design or manual line item. Holiday inventory SKUs are excluded because their price-book bridge stores inventory cost, not the customer selling price. If no Holiday Lights selling products are configured, drawing remains available as visual-only artwork and the builder will not silently substitute hard-coded quote prices.

Screenshot placeholder
Canvas tab switcher showing Satellite, Street View, and Property Photo tabs

Drawing Tools

Use the drawing tools to trace gutter lines, mark zones, and place light positions on the canvas.

  • Gutter Line Tool -- click to place points along the roofline. The system measures the total linear footage.
  • Zone Tool -- draw enclosed areas for accent lighting, bushes, or ground features.
  • Light Placement -- mark individual fixture locations for spotlights or ground stakes.
Screenshot placeholder
Gutter line being traced along a roofline on the satellite view with measurement labels

Color Picker

Select the light color for each line or zone. Options include:

  • Warm white
  • Cool white
  • Multi-color
  • Red
  • Green
  • Blue
  • Custom (enter hex code)
Screenshot placeholder
Color picker expanded showing warm white, cool white, multi-color, and individual color options

AI Measurement

Click Measure with AI to let the system estimate linear footage from a property photo. Upload a clear photo of the home, and the AI traces the gutter lines and returns measurements.

Screenshot placeholder
Measure with AI button and the resulting auto-traced gutter lines on a property photo

AI measurement works best with:

  • Clear, well-lit photos
  • Unobstructed views of the roofline
  • Standard residential architecture

The AI measurement tool is an authenticated office-side action. The signed-in team member needs Holiday Lights manage, Estimates create, or AI access before CE Pro will call the measurement service.

Street View image loading now also runs through authenticated internal map routes. That means the signed-in teammate needs estimate-view access, and CE Pro prefers GOOGLE_MAPS_SERVER_API_KEY for those requests. If the dedicated server key is missing, the office environment falls back to NEXT_PUBLIC_GOOGLE_MAPS_API_KEY. If that public Maps key is browser-only, referrer-restricted, or missing Street View access, the design canvas keeps the plain-language unavailable message instead of falling through to a misleading address or image-load error.

For complex rooflines, trace manually for better accuracy.

Standalone Designer Pilot Safeguards

The separate Christmas Lights designer pilot uses stricter automatic-quote rules while it is evaluated for a future native rollout:

  • Properties over 4,000 square feet are stopped before automatic analysis

and sent to manual review.

  • The Apify test selector requires known square footage, prefers detached homes

near 2,000 square feet, and screens the available listing gallery before a roofline trace is created.

  • A low-cost photo-selection pass chooses a clear front or angled-front facade.

Aerial, interior, rear, side-only, distant, heavily obstructed, and complex views do not proceed automatically.

  • The precision vision pass must independently confirm that the selected image

is suitable for a customer mockup. Its roof points must follow visible roof edges, and decor uses bounded zones fitted to the actual trees, bushes, columns, wreath locations, and walkways.

  • Click Render winter in the designer to create the reusable customer

background. The edit changes only the season, weather, and time of day: a blue-hour sky, realistic snow, subtle snowfall, and warm existing windows. It preserves the source facade, roof geometry, landscaping positions, framing, and perspective.

  • Good, Better, and Best lighting is drawn after the winter background is

created. The image model never generates package lights, so the saved roof segments and decor zones remain the source of truth for every tier.

  • C9 roofline pricing still uses the contractor's configured per-foot rate. If

the measured seasonal service is lower, the customer quote applies the contractor's $1,000 minimum.

  • Good, Better, and Best emails include separate package images. The test sender

stops instead of delivering when the Good tier still falls outside its target band after the service minimum.

These safeguards apply to the standalone pilot. The current native Holiday Lights wizard remains the production workflow until the replacement is ready.

Design Summary Panel

The right panel updates in real time as you draw. It shows:

MetricDescription
Linear FeetTotal length of all traced lines
ZonesNumber of defined lighting zones
Color BreakdownFootage per color selection
Mini Light StrandsNumber of strands needed (calculated from linear feet)
Roof PitchFlat, Standard, or Steep -- affects installation pricing
Unit Price per FootYour configured rate
SubtotalLinear feet multiplied by unit price
Screenshot placeholder
Design summary panel showing linear feet, zones, color breakdown, strands, roof pitch, and subtotal

Tab 2 -- Bundle

Link the holiday lights estimate to an existing power wash estimate for combined pricing.

Screenshot placeholder
Bundle tab showing the option to link a power wash estimate and the calculated bundle savings

How Bundling Works

  1. Select an existing power wash estimate for the same customer. The system searches by customer name and address.
  2. The combined price appears with the bundle discount applied.
  3. Enter the Bundle Discount amount (percentage or dollar value).

Bundling a power wash with holiday lights increases the average ticket value and gives the customer a reason to book both services at once.

Screenshot placeholder
Bundle discount field with percentage applied and the updated combined total

Tab 3 -- Quote Preview

The quote preview shows exactly what the customer will see.

Screenshot placeholder
Quote preview tab showing the full estimate with customer info, design details, and pricing

Customer Info

Name, email, phone, and property address.

Design Details

  • Linear feet
  • Number of zones
  • Colors used
  • Roof pitch

Pricing Breakdown

Line ItemDescription
InstallationPer-foot rate multiplied by total linear feet
Mini LightsCost of light strands
RemovalIncluded if a 3-year contract is selected
SubtotalBefore discount and tax
Bundle DiscountApplied if a power wash is linked
TaxBased on your configured tax rate
TotalFinal price
Screenshot placeholder
Pricing breakdown table showing installation, lights, removal, subtotal, bundle discount, tax, and total

Contract Term

Select between two options:

  • 1-Year Contract -- single-season installation and removal.
  • 3-Year Contract -- locked pricing for three seasons. Removal costs are included in the annual price.

If your office uses the AI estimate-review tools on a holiday lights quote, the nearby-comparison benchmark now follows the first-year annual contract price when it exists. That keeps the review aligned with what the customer would actually pay for the selected contract instead of comparing an annual contract against install-only historical subtotals.

Screenshot placeholder
Contract term radio buttons showing 1-Year and 3-Year options with price comparison

Proposal Media

Choose the saved visual references that should be delivered with the proposal:

  • Photos -- property photos used during the design.
  • Design -- the saved Holiday Lights lighting design.
  • Winter Wonderland mockups -- renderings of the home with lights applied.

Enable, caption, and reorder these references in Proposal Media. The customer sees only enabled items when opening the proposal link or PDF. An explicitly hidden or removed item is not emitted into either output, while a legacy draft without media settings keeps its existing media behavior.

Generated holiday mockups stay in private object storage. The estimate and proposal retain only the server-generated image id, not a storage path or permanent signed link. CE Pro revalidates the office member, customer account, or public quote token before streaming the matching image.

When the wizard creates the paired holiday-lights sidecar for a bundled residential estimate, CE Pro now keeps the follow-up client-link update scoped to the same workspace that created the quote. That prevents cross-workspace retry or rollback paths from touching the wrong holiday-lights record.

AI Mockup Guardrails

Mockup generation is an authenticated web-office action. Before CE Pro calls the image editor, the signed-in teammate must be able to use the web admin and must be able to see the estimate's location.

CE Pro also applies these protections before sending a mockup request:

  • The request must come from the signed-in CE Pro browser and use the app's JSON

request format. Cross-site form submissions and non-JSON requests are rejected before they can consume a rate-limit slot, reserve a request, or contact the image provider.

  • The browser request is a small bounded command containing only a new request

id, the saved package id, and one of the three approved styles. CE Pro creates both the clean property source and numbered placement guide on the server.

  • Each teammate is limited to five generation attempts per minute and the

organization to 20 per hour. The shared limiter fails closed when it is unavailable.

  • Durable ceilings default to 20 charged or potentially charged requests per

estimate and 500 per organization per calendar month. A safe failure that occurs before provider spend does not consume those ceilings.

  • The package must still be a draft with customer-visible design content. The

provider request hash binds the organization, estimate, package, draft revision, style, and complete normalized drawing.

CE Pro records each paid mockup's image count, provider token usage, and estimated cost. Mockups use OpenAI's current GPT Image 2 editor at explicit medium quality and a 1536×1024 landscape output. A conservative usage estimate is recorded when the provider does not report token details. The request row is written before the provider call, so a retry with the same request id checks the durable ledger instead of creating a second paid image.

If the provider outcome is unknown or the provider returns no usable image, CE Pro preserves and meters that terminal request. The same request id is never sent to the provider a second time after an ambiguous outcome; starting a new generation uses a new id.

Completed images are staged before private upload and use a deterministic, request-bound object path. If private storage is temporarily unavailable, the same request retries that upload without asking the image provider to generate again. New mockups never fall back to an inline data URL. The draft and final Send boundary accept only a succeeded result generated from the package's exact current design.

These guardrails help prevent accidental spend spikes and keep the tool available for active estimators.

Screenshot placeholder
Proposal media section showing attached photos, a saved lighting design, and a Winter Wonderland mockup

Bulk Seasonal Re-Quotes

Use the Estimates list to renew prior-season customers without rebuilding each design or changing the historical estimate.

  1. Go to Estimates and filter the list to Holiday Lights.
  2. Tick the checkbox on each prior-season estimate you want to renew (the

desktop table; the phone cards do not select).

  1. Click Re-Quote for New Season.
  2. Choose the Target season (for example Winter 2027) and enter the

Price increase (%). Enter 3 for a three-percent increase.

  1. Click Create Renewal Drafts to review the drafts first, or

Create & Send Renewals to attempt delivery for the selected estimates.

The confirmation counts selected estimates, not predicted email recipients. Current delivery, consent, and approval checks determine which renewals can be sent; ineligible renewals stay drafts and an existing renewal for the target season is skipped. Review the final summary for the actual draft, sent, skipped, and failed counts.

Each renewal is a new estimate. The original estimate and its status history remain unchanged. The renewal carries forward the customer, property, zones, lighting design, packages, selected contract term, and internal material and labor costs. The chosen percentage applies to the customer price of every package on the renewal and never changes wholesale costs. Attached photos and generated preview images are not carried over; attach them again on the renewal if you want them. The renewal keeps undated removal/storage choices, customer and crew notes, and the saved design selection. It clears the prior installation-week and requested-removal dates, even when the source schedule window is incomplete, so the new season can be planned afresh. Add property photos and generated previews again for the renewal.

The target season must be later than the source season. CE Pro rejects a same- season or earlier target before creating a draft, leaves the source unchanged, and skips a source that already has an open renewal for the requested later season. Retrying a partial batch therefore cannot create a second open renewal for the same source and target.

CE Pro links each renewal back to its source estimate and skips a source that already has a renewal for the same target season, so retrying a partial batch is safe. An estimate without a customer email stays a draft even when you chose to send.

Review the completion summary after the batch finishes. It separates new drafts, sent renewals, sources that were skipped, and failures that still need attention, with the reason for each.


Saving and Sending

Sent Holiday Lights quotes open in the shared customer viewer with the saved design scope, package, contract term, proposal media, total, and signed deposit schedule. The customer can download the standard estimate PDF, sign on a phone or computer, and then pay online or arrange an offline deposit. An offline choice stays Deposit pending until the office confirms receipt.

Email pause: Outgoing email delivery remains paused. The current proposal send flow still requires an eligible delivery channel; SMS requires the configured workspace sender and customer consent. Copy link is available after proposal issuance; the email steps below describe resumed delivery.

The deposit is taken from the accepted Holiday Lights agreement. CE Pro does not substitute a generic 25% deposit when that agreement calls for another percentage or no deposit. A selected proposal option can carry a fixed deposit amount when that option is part of the signed acceptance.

The same action buttons appear at the bottom of the screen regardless of which tab is active.

ButtonWhat It Does
Save DraftSaves the estimate without sending
Preview PDFOpens a PDF preview of the full proposal
Send EstimateOpens the send modal
Screenshot placeholder
Action buttons at the bottom -- Save Draft, Preview PDF, Send Estimate

Send Modal

Click Send Estimate to open the same shared review-and-send modal used by the other estimate and proposal wizards.

The subject line, email body, and SMS body are pre-filled. Edit them if needed. For SMS, the character counter shows your message length against the 160-character limit.

Screenshot placeholder
Shared send modal with editable email and SMS copy

Click Confirm & Send. CE Pro now confirms the holiday-lights email and text send before it reports success back to the office, and the admin quote header uses that same shared modal instead of bypassing the review step with a direct-send button.

  • If the send succeeds, the estimate moves to Sent and the office gets a success confirmation with the destination email address.
  • If the email send fails, the wizard keeps the estimate retriable instead of silently claiming success.
  • After the first successful send, the same header action becomes Resend Proposal so the office can send the holiday-lights email again without rebuilding the quote.

The matching View Public Page action now follows that same live customer-link path too. If the linked estimate already has a shared quote token, the office preview opens the shared /quote/[token] page; otherwise CE Pro falls back to the seasonal portal URL instead of a tokenless estimate link that would open in read-only mode.

  • If the client has no phone number on file, or if SMS delivery is unavailable, the email still sends and the office sees a warning explaining why the text message did not go out.

Holiday-lights sends now stay on the seasonal delivery path inside the shared send module. That keeps the outgoing email and SMS pointed at the holiday-lights workflow instead of falling back to the standard residential estimate sender, while the linked shared estimate workspace records the send history and sent quote event from the same send completion path.

When a linked holiday-lights estimate already has a persisted shared public quote token, the delivered email and SMS now prefer that shared /quote/[token] link first and only fall back to the older holiday-lights portal URL if the shared quote link is unavailable. That keeps seasonal sends aligned to the same durable quote-core public link model the other migrated estimate types already use.

When a customer opens that holiday-lights portal from the delivered quote link, CE Pro now runs the same shared quote-core viewed-event bookkeeping there too. The latest open holiday-lights quote for that customer records the public portal view back into the linked estimate workspace instead of leaving the seasonal portal outside the shared send/view history.

That same seasonal view bridge now also runs when a customer opens the shared /quote/[token] page for a holiday-lights quote. Shared public quote links still render from the linked estimate workspace, but the underlying holiday-lights source quote now records its own viewed timestamp and seasonal pipeline move from that same open instead of only the linked estimate seeing the activity.

The first holiday-lights customer open now also advances the source seasonal quote from Sent to Viewed instead of only stamping viewed_at. That keeps viewed-status filters, dashboard counts, and seasonal reporting aligned with the first actual customer open.

Once a seasonal quote has been viewed, the office can still resend it normally. CE Pro now treats Viewed holiday-lights quotes as resendable proposal records instead of blocking delivery after the first customer open.

Shared /quote/[token] opens now record as shared quote opens in the holiday-lights sales history instead of being mislabeled as portal-only opens, which keeps the seasonal activity trail aligned with the public path the customer actually used.

Holiday-lights draft saves and status changes now run through the same shared quote-core service layer too. Saving or editing a seasonal quote now keeps the linked shared estimate, attached design snapshot, and bundled power-wash link aligned from one save path, and manual Declined or Expired updates now write the matching shared quote event onto the linked estimate instead of stopping at the seasonal source record.

Older workspaces that still had the earlier holiday-lights estimate-list projection function now stay compatible too. Seasonal quote saves now keep the shared estimate-list projection writing delivery_state as JSON, so holiday-lights draft creates no longer fail on production databases that were partially through the quote-core rollout.

When you reopen an existing holiday lights estimate from admin, the header now includes the office-side actions you expect:

  • View Public Page
  • Download PDF
  • Send Proposal or Resend Proposal after the first successful delivery
  • Open Estimate Workspace
  • Convert to Job after the linked estimate exists

Behind that linked estimate workspace, holiday lights quotes now also feed canonical shared quote-core line items instead of only the older compatibility line_items JSON. The holiday-lights save routes still own the source holiday_lights_estimates table for now, but the linked estimate record now carries structured holiday-lights line items and quote snapshots aligned to the same quote-core direction used by generic, residential, fleet, and commercial work.

That linked estimate workspace now also carries the source holiday-lights estimate id directly, which lets shared quote-core public links rebuild the seasonal summary from the linked estimate record instead of losing the holiday-lights context when staff or customers open the shared quote page outside the dedicated portal send flow.

Holiday-lights quote-core syncing now follows the saved contract term too. When a quote has zone-based annual pricing, the linked estimate workspace uses the selected 1-Year or 3-Year annual contract total instead of falling back to the older midpoint install range, and reopening the office editor keeps the saved term, premium, and proposal media selections in place instead of snapping back to the default 1-year view.

Editing an existing holiday-lights quote now also keeps the saved Price Guarantee Years value aligned with the latest seasonal pricing config. Traced quotes that start from zone-derived linear footage no longer fail validation just because the office left the manual linear-feet field at 0 while the traced roofline still measures correctly.

That same saved contract-term total now carries through the rest of the workflow too. Holiday-lights send copy, AI review comparisons, client-detail estimate totals, and admin revenue / lead-source reporting now read the saved selected annual contract price before they fall back to the older low/high range fields, which keeps the office-facing numbers aligned with what the customer actually accepted.

The office-side holiday-lights inventory list now follows that same shared catalog direction too. The inventory admin screen and the dashboard low-stock count read from the shared price_book_items bridge when those SKU rows exist, and legacy SKU create/update actions refresh that shared copy after the write so the seasonal inventory catalog stops depending on a separate read-only table path.

Those holiday-lights inventory saves now also fail closed if the shared price-book bridge cannot be updated. If CE Pro cannot persist the matching shared SKU row, the office-side inventory create or edit is rolled back instead of leaving inventory_skus and the shared quote-core catalog out of sync.

Holiday-lights inventory writes now only touch the matching shared SKU rows too. Admin inventory creates and edits update the specific bridged price_book_items record for that SKU instead of rebuilding the whole holiday-lights inventory bridge after every change, which keeps the shared price-book copy aligned with far less write churn.

Accepted holiday-lights quotes now reuse the shared quote-core accepted follow-up helper too. When a customer accepts from the seasonal status flow or the office signs the linked holiday-lights contract, CE Pro re-syncs the linked estimate workspace first and then runs the same accepted-event, pipeline, webhook, gamification, and accepted-job follow-up path used by the newer shared estimate flows instead of keeping a separate seasonal-only acceptance branch.

Holiday-lights contract signing continues to store the captured signature directly on the contract record, and that signature-backed acceptance path is now regression-tested alongside the shared estimate-signature and commercial proposal-signature flows so CE Pro can harden all public signature collection paths together instead of patching them one module at a time.

That acceptance bridge now also owns the source holiday-lights quote update itself. Customer status changes and office-side contract signing both flow through the same helper, so the seasonal sales pipeline records the acceptance from one path, and already-accepted quotes no longer rewrite accepted_at just because the office reapplies a signed contract record later.


Tips

  • Desktop work is protected continuously. The web designer saves a browser recovery draft shortly after each customer, package, canvas, schedule, or note change. Refreshing the page restores that newer draft instead of reverting to the last server save. Use Save draft in the header or below the canvas to persist the full estimate to CE Pro; the first save of a new estimate creates its permanent editable record.
  • 3D Satellite uses the stable desktop map renderer. Orbit, tilt, and zoom the saved property location, then capture a bounded snapshot for drawing. CE Pro compresses that snapshot before adding it to the estimate so opening 3D or saving browser recovery cannot exhaust the page's memory or browser storage.
  • Desktop review uses exact package prices. The selected Good, Better, or Best subtotal is the one-season price. The configured three-year discount produces one exact per-season agreement price. Customer review and preview no longer show low/high ranges or internal materials and labor estimates.
  • Delete only what you selected. Turn on Move items, tap or drag the strand, wreath, or mini-light area you want, and use Delete selected. The designer no longer treats the canvas delete control as “remove everything.” On desktop, Clear all is a separate action with a confirmation prompt.
  • Protected Winter Wonderland images stay inside the signed-in designer. Web mockup reads use the current CE Pro origin so the browser keeps the active tenant session. If an image genuinely fails, the old canvas is cleared instead of leaving a stale property image underneath the warning.
  • Winter Wonderland is a clean preview. The generated snowy image does not show the editable C9, mini-light, wreath, outlet, or cable drawing overlays. Select a drawing or power tool to return to the original property canvas before making changes.
  • Power tools take control of the canvas. Opening the power layer or selecting Place outlet or Draw cable automatically exits Move items, so the next canvas press places the selected electrical item.
  • Zoom without losing placement accuracy. At higher zoom levels, taps remain aligned to the underlying property image and editing bulbs, wreaths, outlets, and cable paths stay compact instead of growing with the photo.
  • Pan a zoomed mobile canvas with two fingers. Once the canvas is above 1×, drag with two fingers to inspect another roofline or section of the property. Panning stays inside the image bounds, while one-finger drawing and Move items continue to work normally.
  • Generation always uses the complete property frame. You can zoom in while drawing, but Winter Wonderland temporarily captures the original 1× property view and then restores your editing zoom. The builder and customer proposal use a fit-to-frame preview so no side of the generated house is cropped.
  • 3D Satellite does not require device-location permission. CE Pro resolves the saved service address through its tenant-aware Google address service, then opens the satellite camera directly on that property.
  • Each designed item stays one estimate line. A roofline, wreath, mini-light area, permanent-light run, or other design item appears once on the linked estimate. Installation production time remains available internally without creating a duplicate customer-facing labor line.
  • Reopening cannot erase priced scope. The server rejects a stale empty builder snapshot when the existing Holiday Lights estimate still has priced items. Estimate detail prefers canonical line items and can recover the display from the saved editor snapshot when an older projection is missing.
  • Use the satellite view to trace gutter lines accurately. The overhead angle gives the clearest picture of the full roofline.
  • AI measurement works best with clear property photos taken during the day. Avoid photos with heavy shadows or tree cover blocking the roofline.
  • 3-year contracts include removal pricing in the estimate. This simplifies the proposal for the customer and locks in recurring revenue.
  • Bundle with a power wash for a higher ticket value. Customers who are already spending on holiday lights are good candidates for a fall cleaning package.

Troubleshooting

AI measurement returned inaccurate results

The AI works best on standard rooflines with clear photos. For L-shaped homes, complex dormers, or multi-level roofs, trace manually using the gutter line tool. You can combine AI-traced lines with manual adjustments.

Colors do not match the design summary

Make sure you select the color before drawing each line segment. If you need to change a color after drawing, select the line on the canvas and use the color picker to update it.

Bundle discount is not applying

Confirm that the linked power wash estimate belongs to the same customer (matched by name and address). The bundle discount only applies when both estimates are active and not already sent.

Was this article helpful?

Still need help? Contact support