Northlight's problem is not demand or image quality; it is operational control. At roughly 45 shoots per week, Mike is still the bridge between SMS/DM, Aryeo, Google Calendar, Dropbox, WhatsApp and QuickBooks. The first 30 days should solve the stated priority: "Stop losing the text/DM bookings" and ensure every accepted reschedule creates a calendar commitment and confirmation. Because Aryeo's accessible automation options vary by account, the practical solution is a dedicated booking-by-text number in OpenPhone feeding a short structured intake form, with Make handling Google Calendar and a controlled Aryeo-entry queue. Do not promise direct Aryeo creation until Northlight confirms API or Zapier access with Aryeo support. Next, replace WhatsApp job assignment with a production board tied to Dropbox, then automate invoice reminders. These changes should recover about 15 owner hours per week, protect true next-day delivery at 200 shoots per month and reduce dependence on Mike's memory without automating final QC.
What we noticed
Northlight is a multi-photographer business operating through one owner's memory.
The phrase "Same address, 5 places" captures the issue. A job is copied from text or DM into Aryeo, Google Calendar, Dropbox, WhatsApp and sometimes QuickBooks. Each manual handoff can fail. The resulting misses are already damaging Northlight's differentiator: next-day delivery and responsive recovery when something goes wrong.
The pattern
Agents use the easiest channel, then Mike manually turns those messages into operational records and personally resolves every exception. Mornings start with editor and route triage; evenings end with uploads, drone edits, booking entry and collections. Melissa was not an isolated oversight: her accepted Monday weather reschedule remained only a text-thread promise, so there was no calendar event, reconfirmation or overdue-task warning.
The structural constraint
Owner-centralized orchestration is the ceiling. Alex adds capture capacity and Manila adds editing capacity, but every booking, assignment, exception, QC decision and collection still passes through Mike. Northlight cannot reliably hold true next-day delivery at 200 shoots per month while this remains true.
How your business runs today
Where work moves — and where it snags.
Northlight produces about 180 shoots per month with approximately $740,000 trailing revenue. Around 40% of bookings arrive by text or DM, so roughly 18 jobs per week require manual entry. Delivery is usually 24–36 hours and can reach two days during spikes. About 12%, or 22 jobs per month, return for revisions or reshoots. Repeat agents account for about 55% of work. Aryeo handles formal booking and delivery, Google Calendar is the actual schedule, Dropbox moves files, WhatsApp assigns editors, and QuickBooks issues invoices. The formal stack exists, but SMS, WhatsApp and Mike's memory control the real workflow.
Hours you'll get back
15hrs/week
MathRecoverable owner time target: booking capture and duplicate entry 4.5 hours; reschedules, confirmations and route administration 2.5; Dropbox/editor assignment and morning status checks 3.0; repetitive agent delivery and payment follow-up 2.0; revision tracking and production administration 3.0. Total: 15.0 hours/week. This excludes final image QC, shooting, homeowner interactions and real complaint calls. It is consistent with Mike's statement that he spends "15+ hrs/week doing $25/hr admin," and it sits at the conservative end of the diagnosed 15–22 avoidable hours.
Estimated annual value
$114,030 in annual owner-capacity and direct-risk value, before any review/referral upside
MathOwner-capacity gap: 15 hours/week × ($150 shooting value − $25 admin value) × 50 weeks = $93,750/year. Avoid one Melissa-type loss per quarter: 4 × 12 shoots/year × $260 stated AOV = $12,480/year. Cut the 12% rework rate to 10%: 180 shoots/month × 2 percentage points × 12 months = 43.2 fewer affected jobs; at 20 owner minutes each × $150/hour = $2,160/year, excluding the much larger cost of physical revisits. Recover just two otherwise-missed direct bookings per month: 24 × $235 contribution estimate ($260 AOV less about $25 editing/payment-variable cost) = $5,640/year. Total = $114,030. Separately, if three recovered hours become three extra shoots weekly, gross capacity is 3 × $260 × 50 = $39,000/year, but this is not added to the total to avoid double counting. Validate economics immediately: $740,000 ÷ (180 × 12) implies about $343 per shoot, not the stated $260 AOV.
Where the time goes — and the fix
Your top time-drains, mapped.
Text/DM booking capture and reschedule commitments
Quick win
≈ 4.5 hrs/week
Effort: MediumImpact: HighDIY: 4–6 hours for the form, sheet, calendar scenarios and tests; add 1–2 hours if OpenPhone number setup or Aryeo access requires supportSkill: Intermediate
Why this happens
About 40% of approximately 45 weekly bookings arrive outside Aryeo. Mike retypes the same details and sometimes misses one, as in "entered 4 of them into Aryeo, forgot the fifth." Weather changes and phone promises have no tracked state. That is exactly how Melissa's Monday twilight was accepted but never operationally committed.
The fix
Create one controlled SMS intake lane using OpenPhone and a Northlight booking/reschedule form. Make creates or updates a Google Calendar HOLD immediately, sends confirmations, and logs an Aryeo-entry task. If Aryeo confirms API or supported Zapier actions, add direct Aryeo job creation; otherwise preserve a five-minute human Aryeo verification step rather than using fragile browser automation.
ToolOpenPhone + Tally + Make + Google Sheets/Calendar; Aryeo remains booking and delivery system·CostOpenPhone Starter about $19/user/month billed annually; Tally free; Make Core about $10.59/month; Google tools already owned. Add a second OpenPhone user only if Alex needs the shared inbox.
Steps
01Buy or port a Northlight booking number into OpenPhone. Keep Mike's current number temporarily, but set its voicemail and text reply to direct new booking details to the Northlight line.
02Create a Tally form named "Northlight Booking & Change Request." Required fields: request type; agent name; mobile; email; property address; requested date; preferred window; services; access method; occupied status; listing readiness; brokerage; notes. For reschedules, also require existing appointment date and reason.
03Use these service options exactly: Standard photo $195; Drone +$85; Floor plan +$65; Matterport +$135; Twilight +$145; Photo + drone + floor plan + Matterport bundle $395; Same-day rush +$100 subject to schedule.
04Add a required acknowledgement: "Submitting this request does not confirm the appointment. Northlight will send a confirmation with the final date and time."
05Create a Google Sheet named "Northlight Intake Queue" with columns: Request ID, Submitted At, Request Type, Agent, Mobile, Email, Address, Requested Date, Preferred Window, Services, Access, Occupied, Notes, Status, Calendar Event ID, Aryeo Entered, Owner, Last Confirmation Sent.
06In Make, create Scenario 1. Trigger: Tally Watch New Responses. Actions in order: add/update row in Intake Queue; search Google Calendar for the address and requested date; create a 30-minute yellow event titled "HOLD — {address} — {services}"; write the Event ID to the sheet; send OpenPhone SMS to the agent acknowledging the request; notify Mike in OpenPhone or email.
07Scenario 1 condition: if Request Type = Reschedule and no matching address event exists, create a red event titled "ACTION REQUIRED — RESCHEDULE NOT MATCHED — {address}" and notify Mike; do not silently create a duplicate confirmed shoot.
08For accepted times, Mike changes the sheet Status to Confirmed and assigns Mike or Alex. Make Scenario 2 triggers on that status change, updates the calendar title to "CONFIRMED — {address} — {services} — {photographer}," applies the correct duration and drive buffer, sends the confirmation SMS, and sets Aryeo Entered = Pending.
09Duration rules: standard photo 45 minutes; add drone 15; add Matterport 20; bundle 80; twilight is a separate 45-minute event. Add a 20-minute default drive buffer; Mike adjusts only when route geography requires it.
10Create an Aryeo-entry view filtered to Status = Confirmed and Aryeo Entered != Yes. Mike or an admin opens this once at 4:00 p.m., enters/verifies each job in Aryeo, then checks Yes. This should take about five minutes daily, not scattered entry all evening.
11Ask Aryeo support exactly: "Does our account have API, webhook or supported Zapier access to create and update orders from an external intake form, including services, appointment time, client and property address?" If yes, connect Make to the supported method and retain a daily exception report. If no, do not automate Aryeo with screen scraping.
12Create Make Scenario 3 at 4:30 p.m. daily. Search tomorrow's confirmed events. If Aryeo Entered is not Yes, send Mike: "Tomorrow has {count} confirmed jobs not verified in Aryeo: {addresses}."
13Create Make Scenario 4 at 6:00 p.m. the day before each confirmed shoot. Send the reconfirmation text. If a reschedule event was created or modified in the prior 72 hours, require the agent's YES response and flag it red if no response by 9:00 a.m. shoot day.
14For Instagram or Facebook DMs, save one reply containing the Tally link. Do not attempt AI extraction from multiple DM platforms in phase one; force every request into the same controlled queue.
Ready to use · SMS intake and confirmation sequence
NEW REQUEST AUTO-REPLY:
Thanks for reaching out to Northlight. Send the property details here so nothing gets missed: {booking_link}. I’ll confirm the final date and time by text. — Mike
REQUEST RECEIVED:
Got it — I have your request for {address} on {requested_day}. I’m checking the route and will send the confirmed time shortly. It is not on the schedule until that confirmation arrives. — Mike
CONFIRMED:
Confirmed for {day}, {date} at {time}: {address}. Services: {services}. Access: {access_method}. Please have occupants out, lights on and the property photo-ready before we arrive. Delivery is by the end of the next day. Reply here if access or timing changes. — Mike
RESCHEDULE ACCEPTED:
Confirmed: {address} has moved from {old_day_time} to {new_day_time}. I’ve updated the schedule. Please reply YES so I know the new time is on both sides. — Mike
NIGHT-BEFORE RECONFIRMATION:
We’re set for {address} tomorrow at {time}. Access is listed as {access_method}. Please reply YES to confirm the time and that the property will be ready. — Mike
How to test it
Use a fake agent and property. Submit one new booking, one reschedule matching an existing event, one reschedule with no matching event and one duplicate address. Verify the sheet row, calendar status, event duration, confirmation text, Aryeo-pending alert and unmatched-reschedule alert. Then run five real bookings in parallel with the old process for three days. Success means all five appear once in the queue and calendar, no confirmed booking lacks Aryeo verification, and every modified appointment receives a written confirmation.
What could go wrong
Aryeo may not expose job-creation access; keep human verification rather than using brittle browser automation. Agents may continue texting Mike's personal number; use a saved reply and move every request to the form. Automatic calendar creation can create duplicates if addresses are formatted differently; normalize street abbreviations and search by street number plus postal code. OpenPhone cannot reliably automate every inbound keyword without additional setup; use Make-supported messaging where available and keep a visible exception queue. A calendar HOLD must never be mistaken for confirmation.
Done looks like
Every text/DM request has a Request ID within two minutes, every accepted appointment or reschedule has one confirmed calendar event, all next-day jobs are verified in Aryeo by 4:30 p.m., and Northlight records zero missed direct bookings or unconfirmed reschedules for 30 consecutive days.
Access, occupancy and property-readiness delays
Quick win
≈ 1.5 hrs/week
Effort: LowImpact: MediumDIY: 45–60 minutes after the intake workflow existsSkill: Beginner
Why this happens
Critical access details remain buried in texts. In the sample day, Mike waited 20 minutes for an occupant to leave and had to ask what to do about an unmade bed. Those delays destabilize a route that already includes drone, Matterport and twilight constraints.
The fix
Add structured readiness fields to intake and send a 24-hour checklist requiring confirmation. Flag occupied properties and agent-meet access for manual attention.
ToolTally + Make + OpenPhone + Google Calendar·CostIncluded in the booking-capture setup
Steps
01In the intake form, require Access Method with options: Electronic lockbox, Combination lockbox, Agent meeting photographer, Occupant providing access, Other.
02Require Occupancy: Vacant, Owner occupied, Tenant occupied. If occupied, require contact name and whether they know the arrival window.
04Write Access Method and Occupancy into the Google Calendar description so Mike and Alex can see them without opening Aryeo.
05At 6:00 p.m. the prior day, Make sends the readiness SMS. For Agent meeting or Occupant access, require YES.
06At 9:00 a.m. shoot day, send Mike a red alert for any occupied property or agent meet without a YES response.
07Set an operating rule: after a 15-minute access delay, the photographer calls the agent and may move to the next route stop; no AI makes that judgment.
Ready to use · Property-ready confirmation
We’re scheduled for {address} tomorrow at {time}. Before we arrive, please make sure occupants are out, beds and counters are ready, lights are on, pets are secured, vehicles are moved and access is working. We have {access_method} on file. Reply YES to confirm, or send any change now. — Mike
How to test it
Test one vacant lockbox job and one occupied agent-meet job. Confirm the occupied job produces a required-response flag and that both calendar descriptions contain access and readiness data. Track avoidable wait minutes for two weeks.
What could go wrong
Agents may reply YES without preparing the property. The checklist reduces surprises but cannot guarantee readiness. Overly long texts may be ignored, so keep the message concise and send a full preparation link only if Northlight already has one. Do not let automation cancel or move a shoot based solely on no response.
Done looks like
Mike and Alex can see access, occupancy and readiness from the calendar; all occupied or agent-meet jobs are explicitly reconfirmed; avoidable access waits fall below 10 minutes per affected job.
Manual routing and same-day schedule rebuilding
≈ 2 hrs/week
Effort: MediumImpact: MediumDIY: 2–3 hours including historical test and three-day pilotSkill: Intermediate
Why this happens
The route is planned "in my head" even though appointments have geography, windows, twilight timing and capability constraints. A 90-minute buyer walk-through change forced a morning reshuffle, and Alex cannot take Matterport jobs.
The fix
Use Google Calendar as the committed schedule and Routific for a daily route draft. Treat fixed agent windows and twilight as locked stops; optimize flexible stops around them. Maintain photographer capability tags.
ToolRoutific + Google Calendar·CostRoutific starts around $49/month; confirm current pricing before purchase
Steps
01Do not buy Routific until the booking queue has produced clean structured addresses for two weeks.
02Create photographer capability tags in the Intake Queue: Mike = Photo, Drone, Floor plan, Matterport, Twilight; Alex = Photo, Drone, Floor plan, Twilight; Alex Matterport = No.
03At 4:30 p.m., export or enter tomorrow's stops into Routific with address, duration, appointment window and photographer capability.
04Lock exact-time agent meetings, occupied-property windows and twilight events. Give vacant lockbox shoots wider windows.
05Set each route start/end to the relevant photographer's actual base. Use durations from the intake rules and add parking/service buffers.
06Generate routes, review manually, then update Google Calendar times. Google Calendar remains the schedule agents receive.
07After any same-day change, rerun only the affected photographer's remaining route. Call agents when a confirmed time must move; do not send an automatic change.
08Track drive minutes per completed job from calendar travel estimates for four weeks.
Take one completed five-stop day and recreate it in Routific. Compare the suggested route with the actual route and Google Maps total drive time. Pilot live for three days without sending automatic time changes. Success is at least 15 minutes less drive time per photographer per day or materially faster route planning.
What could go wrong
A route engine may optimize mileage while violating agent expectations, sunset timing or Matterport capability. Bad appointment windows produce bad routes. Do not optimize weather-sensitive drone work blindly. If savings are under 15 minutes per route day, cancel the tool and retain structured manual routing.
Done looks like
The next day's route takes under 15 minutes to plan, capability conflicts are visible before confirmation, and average drive time per shoot drops by at least 10%.
Editor assignment, status checking and missed folders
≈ 3 hrs/week
Effort: MediumImpact: HighDIY: 4–6 hours including editor training and a five-job parallel testSkill: Intermediate
Why this happens
Dropbox contains files while WhatsApp contains ownership and deliverables. There is no authoritative production state, so an editor can miss the ping and Mike must inspect folders every morning. One of five galleries was missed entirely in the sample day.
The fix
Create an Airtable production board and connect it to Dropbox through Make. Each job gets an owner, due time and controlled status. WhatsApp becomes discussion only, not the assignment system.
ToolAirtable + Make + Dropbox·CostAirtable Free initially; Team is about $24/user/month billed annually if record/automation limits require it. Make Core about $10.59/month is already counted. Give editors form/interface access where possible before buying paid seats.
02Use these Status options only: Scheduled, Shot, Uploading, Ready for Editor, Editing, Ready for QC, Revision Requested, Revision Editing, QC Approved, Delivered, Reshoot Required.
03Set Due At to 6:30 a.m. the morning after upload for standard overnight jobs. Set rush jobs individually; do not infer rush from an agent's wording.
04Create three editor views filtered by Editor and Status. Create a Mike view grouped by Status and sorted by Due At. Create an "At Risk" view where Status is Ready for Editor or Editing and Due At is within two hours.
05Adopt the folder name format: {YYYY-MM-DD}_{JobID}_{StreetNumber-StreetName}. Stop using address alone, which can duplicate.
06In Make, trigger when a new folder appears under Dropbox /RAW READY. Parse date, Job ID and address; create/update the Airtable job; set Status = Ready for Editor; set Uploaded At; assign the next available editor using a simple rotating field.
07Send the assigned editor one notification containing the Airtable record link, deliverables and due time. If WhatsApp cannot be sent through an approved integration, use email or an Airtable interface notification; do not add another unsupported messaging workaround.
08Require the editor to click Start Editing, which changes Status to Editing, before downloading. If the job remains Ready for Editor for 30 minutes, Make alerts Mike and the backup editor.
09Require the editor to place outputs in /EDITED/{JobID} and submit an Airtable completion form with the folder URL. This changes Status to Ready for QC and timestamps completion.
10Mike performs final QC. For revisions, he enters numbered notes in Revision Notes and changes Status to Revision Requested. The assigned editor receives the record and returns it to Ready for QC.
11Make sends a 6:45 a.m. digest listing Ready for QC, overdue and unclaimed jobs. Mike no longer opens every Dropbox folder to discover status.
12After two weeks, calculate editor first-pass acceptance by editor. Keep final image QC human.
Ready to use · Editor assignment and revision template
EDITOR ASSIGNMENT
Job: {JobID} — {address}
Deliverables: {deliverables}
RAWs: {raw_folder_url}
Due: {due_time_local} / {due_time_manila}
Open the job and select Start Editing before downloading. When complete, upload to {edited_folder_url} and mark Ready for QC.
REVISION NOTES
Job: {JobID} — {address}
1. {filename}: {specific correction}
2. {filename}: {specific correction}
3. {filename}: {specific correction}
Keep all other approved files unchanged. Mark Ready for QC when the revised files are back in the edited folder.
How to test it
Run five jobs through the board while keeping the WhatsApp fallback. Include one deliberately unclaimed job and one revision. Confirm the 30-minute alert fires, files link to the correct Job ID, completion changes status, and the morning digest identifies only exceptions. Compare board status with actual folders before disabling WhatsApp assignment.
What could go wrong
Dropbox folder events can fire before uploads finish; trigger only on a READY marker file or move the folder into /RAW READY after upload completes. Automatic round-robin assignment may overload an editor who is offline; add an Availability checkbox and preserve manual reassignment. Editors may continue responding only in WhatsApp; require status-button use as a condition of assignment and payment reconciliation.
Done looks like
Every uploaded job has one editor, one due time and one visible state; no folder is unclaimed for more than 30 minutes; Mike's morning check is one digest under 10 minutes; first-pass QC rates are measurable by editor.
Drone editing remains on Mike's evening workload
≈ 2 hrs/week
Effort: MediumImpact: MediumDIY: 2–3 hours to build references and score the pilot, spread over two weeksSkill: Intermediate
Why this happens
The $16/gallery Manila workflow covers standard interiors/exteriors but not aerials. Because drone is part of the common bundle, successful sales create owner post-production. The sample day ended with Mike editing drone files after returning from twilight.
The fix
Do not use AI image enhancement after the failed mixed-lighting test. Instead, create a paid drone-editing test for the strongest Manila editor using Mike's preset, reference gallery and fixed QC rubric. Keep a $75/flight overflow contractor only for capture overflow, not routine post-production.
ToolLightroom preset + Dropbox + Airtable production board·CostNo new software; negotiate approximately $4–$7 per aerial set during pilot
Steps
01Select 10 previously delivered aerial sets representing blue sky, overcast, dusk and difficult roof/lot conditions.
02Export Mike's Lightroom aerial preset and create five before/after references showing acceptable color, horizon, perspective, sky and property emphasis.
03Choose the Manila editor with the best first-pass standard-gallery rate. Pay for five blind pilot sets; do not mix pilot files into live deliveries.
04Use the drone QC rubric below and score each set out of 10. Require 9/10 average and no critical miss before live work.
05For the next 10 live jobs, the editor handles aerials but Mike retains full QC. Record revision minutes separately.
06If the editor passes, add Drone Edit as a deliverable in Airtable and price it separately in editor payout. If not, train once more or source a specialist; do not force a low-quality handoff.
Ready to use · Drone editing rubric
DRONE QC — SCORE 0 OR 1 EACH
1. Horizon is level.
2. Vertical perspective looks natural.
3. White balance matches the property and ground conditions.
4. Sky replacement, if used, matches light direction and reflections.
5. No halos around rooflines or trees.
6. Grass, roofs and roads are not oversaturated.
7. Windows and highlights retain detail.
8. Property is the visual priority without misleading alteration.
9. Dust spots, prop artifacts and sensor marks are removed.
10. Export dimensions, color space and naming match Northlight delivery standards.
Critical fail: fake property boundaries, removed permanent objects, implausible sky/light, warped structures or MLS-noncompliant alteration.
How to test it
Blind-test five historical sets against Mike's delivered versions, then ten live sets under full QC. Record Mike's correction minutes. Pass only if average correction time is under three minutes per set and there are no critical failures.
What could go wrong
The editor may reproduce the same color and sky issues already causing revisions. A preset cannot handle every dusk or mixed-weather scene. Do not delegate virtual alteration decisions, property-boundary representation or final approval.
Done looks like
At least 80% of routine aerial sets arrive first-pass acceptable, Mike spends under three minutes correcting each, and 1.5–2.5 evening hours per week are recovered without increased agent revisions.
QC revision and reshoot tracking
Quick win
≈ 1.5 hrs/week
Effort: LowImpact: MediumDIY: 60–90 minutes after the production board existsSkill: Beginner
Why this happens
About 12%, or roughly 22 jobs per month, return for a revision or reshoot, but those categories are combined and notes live in WhatsApp. Northlight cannot tell whether the root cause is Manila color, capture, weather, property readiness or agent preference.
The fix
Keep Mike's visual QC, but structure the outcome and use AI only to turn dictated notes into precise editor instructions. Separate edit revisions from physical reshoots and report root causes monthly.
ToolAirtable + ChatGPT·CostAirtable covered above; ChatGPT Plus about $20/month if Northlight wants a dedicated workspace, otherwise use the existing account
03During QC, Mike dictates rough notes into ChatGPT using the prompt below, then pastes the cleaned numbered notes into Airtable.
04For any physical reshoot, create a new linked scheduling record immediately. It follows the same confirmation and reconfirmation workflow as a paid booking; never leave it as a phone promise.
05At month-end, group rework by editor, photographer, cause and service. Review the top two causes with the relevant person.
06Target revision/reshoot rate from 12% to 10% by day 90; do not lower standards to hit the target.
Ready to use · AI prompt for revision notes
You are formatting QC notes for a real estate photo editor. Preserve every technical instruction and filename. Turn my rough notes into a short numbered list in this format: "{filename}: {problem}; {exact correction}." Use neutral, direct language. Do not invent corrections, praise, explanations or photography changes I did not request. Flag any note that lacks a filename or exact requested outcome with [NEEDS DETAIL]. Keep sky replacements realistic and consistent with the scene. My rough notes:
{paste dictated notes}
How to test it
Use the prompt on three completed revision sets and compare it with Mike's original intent. Confirm no correction is invented or softened. For four weeks, verify every returned job has a Rework Type and Root Cause before it closes.
What could go wrong
AI can misstate a filename or technical correction. Mike must read the output before sending it. A lower reported rate may simply mean staff stopped logging small revisions; reconcile Airtable revision counts with folder versions and reshoot calendar events.
Done looks like
All rework is classified, every physical reshoot becomes a scheduled record immediately, revision notes take under three minutes to prepare, and the business knows its top rework causes by editor and photographer.
Repeated gallery-ready texts and passive rebooking
Aryeo sends the delivery email, but Mike also writes the same readiness text around 20 times per week. After delivery, "Rebook basically only happens if the agent texts me again," despite repeat agents representing only about 55% of work.
The fix
Use Aryeo's existing delivery email and trigger one concise SMS after delivery. Add selective review and rebooking follow-up based on delivered-job status, but never send a review request after a complaint, reshoot or unresolved revision.
ToolAryeo + Make + OpenPhone + Google Sheets/Airtable·CostNo incremental cost beyond the booking stack
Steps
01First check whether Aryeo can emit a delivered-order webhook or Make/Zapier trigger. If yes, use it. If no, change the production board status to Delivered only after Aryeo upload and use that status as the trigger.
02Trigger: Status changes to Delivered. Conditions: valid mobile number; no unresolved revision; no complaint flag. Action: send the gallery-ready SMS once and write Sent At.
03At 48 hours, send a satisfaction check only to agents without an open issue.
04If the agent responds positively, send a review request manually or through a positive-response tag. Do not use sentiment automation to suppress complaints; route uncertain replies to Mike.
05At 30 days after delivery, if the agent has not booked again and normally lists monthly, send the low-pressure availability message.
06Create a lapsed-agent view: no completed shoot in 60 days for agents with two or more prior shoots. Mike reviews this list monthly rather than blasting every contact.
Ready to use · Delivery, review and rebooking messages
GALLERY READY:
Your media for {address} is ready in Aryeo: {gallery_link}. If anything needs attention, reply here and I’ll take care of it. — Mike
48-HOUR CHECK:
Checking that everything for {address} worked as expected. If there’s anything you need adjusted, send it here. — Mike
REVIEW REQUEST AFTER POSITIVE RESPONSE:
Thanks, {agent}. If you have a minute, a short Google review would mean a lot to our team: {review_link}. — Mike
30-DAY REBOOKING NOTE:
Hi {agent}, I’m setting the schedule for the next couple of weeks. If you have a listing coming up, send the address and timing here and I’ll get it handled. — Mike
How to test it
Deliver one internal test job and confirm exactly one readiness SMS sends. Open a test revision before delivery and verify the review follow-up is suppressed. Test the 30-day sequence with a shortened delay in a sandbox row, then restore it.
What could go wrong
Duplicate delivery messages can fire if Aryeo and Airtable both trigger; choose one source and store a Sent At field. Automated review requests after a poor experience will feel careless. Agents may perceive frequent follow-up as salesy, so cap automated post-delivery messages at two and use lapsed-agent outreach selectively.
Done looks like
No gallery-ready text is typed manually, no duplicate message sends, complaints and open revisions suppress review asks, and monthly lapsed-agent outreach takes under 20 minutes.
QuickBooks sends the invoice, but follow-up depends on Mike remembering between shoots. In the sample evening, he chased three invoices already 12+ days late, and some accounts go three weeks before a reminder.
The fix
Use QuickBooks Online's native recurring invoice reminders first. Add an OpenPhone SMS only after the second email reminder or for agents with repeated late payment. This keeps accounting records authoritative and avoids unnecessary integration complexity.
ToolQuickBooks Online + OpenPhone; Make only if QBO plan/API access supports reliable overdue triggers·CostQuickBooks and OpenPhone already owned/recommended; no incremental software cost
Steps
01In QuickBooks Online, open Settings > Account and settings > Sales > Reminders.
02Turn on automatic reminders and set Reminder 1 to three days before due date, Reminder 2 to one day after due date, and Reminder 3 to seven days after due date. Verify wording and enable invoice PDF/link inclusion.
03Set a standard due term for new agent accounts. Use Due on receipt or Net 7 according to Northlight's actual policy; do not mix terms without reason.
04At seven days overdue, add an SMS task or Make trigger only if the invoice remains open and the customer has a valid mobile number.
05At 14 days overdue, create a manual call task for Mike. Do not auto-threaten service suspension.
06At 21 days overdue or after two late cycles, require card-on-file/prepayment for future bookings, subject to brokerage arrangements and Mike's judgment.
07Review Accounts Receivable Aging every Monday for 10 minutes. Record invoice date, paid date and days to pay for the scorecard.
Ready to use · Invoice email and SMS sequence
QBO REMINDER — 1 DAY OVERDUE:
Subject: Invoice {invoice_number} for {address}
Hi {agent},
Invoice {invoice_number} for {address} was due on {due_date}. You can view and pay it here: {payment_link}.
If payment has already been sent, no action is needed.
Thanks,
Mike
SMS — 7 DAYS OVERDUE:
Hi {agent}, invoice {invoice_number} for {address} is still showing open. Here’s the payment link: {payment_link}. If it has already been handled, let me know and I’ll check it. — Mike
SMS — 14 DAYS OVERDUE:
Hi {agent}, invoice {invoice_number} for {address} is now 14 days past due. Please take care of it here: {payment_link}, or call me if there’s an issue with the invoice. — Mike
How to test it
Create a $1 test invoice to a Northlight-controlled email with a one-day due date, then verify reminder timing, links and paid-invoice suppression. Before enabling SMS, test a paid and unpaid invoice to ensure only the unpaid record qualifies.
What could go wrong
QBO reminder availability and labels vary by subscription. A stale payment status could send a reminder after an external payment; reconcile deposits and use QBO's open balance as the condition. Brokerage accounting teams may require different terms. Do not automatically suspend an agent or charge a card without authorization.
Done looks like
Every open invoice receives consistent reminders, paid invoices are suppressed, Mike only handles 14-day exceptions, and average days to pay reaches seven or less.
Your messages, rewritten
The words you send every day — sharpened.
Booking confirmation
Original
Hey {agent}, confirmed for {day} at {time}, {address}. Please make sure lockbox is on and lights are on throughout. Turnaround 24hrs. Text me if anything changes. — Mike
Ready to use · rewritten
Hi {agent}, you’re confirmed for {day}, {date} at {time} at {address}. We have {access_method} on file. Please have occupants out, lights on and the property photo-ready before we arrive. Delivery is by the end of the next day. Reply here if access or timing changes. — Mike
Why betterIt confirms the full date, records access, defines readiness and states a clear next-day promise without overpromising a rolling 24-hour deadline.
Gallery ready email
Original
Hey {agent}! Your photos from {address} are ready in Aryeo. Let me know if you need anything tweaked. Cheers, Mike
Ready to use · rewritten
Subject: Media ready — {address}
Hi {agent},
Your media for {address} is ready in Aryeo: {gallery_link}.
If anything needs attention, reply here and I’ll take care of it.
Mike
Why betterIt is concise, supplies the direct gallery link and sounds controlled and responsive without unnecessary enthusiasm.
Payment nudge
Original
Hey {agent}, just following up on the invoice from {date}, whenever you get a chance! Thanks, Mike
Ready to use · rewritten
Hi {agent}, invoice {invoice_number} for {address} is still showing open. You can view and pay it here: {payment_link}. If it has already been handled, let me know and I’ll check it. — Mike
Why betterIt removes apologetic language, identifies the specific invoice and property, and gives the agent an immediate action while remaining professional.
Weather reschedule
Original
Hey {agent}, radar's showing rain rolling in for {day} — want to move to {alternate_day}? Let me know and I'll lock it in.
Ready to use · rewritten
Hi {agent}, the forecast for {day} is likely to affect the exterior and aerial work at {address}. I can move it to {alternate_day} at {alternate_time}. Reply YES to take that time; I’ll send a separate confirmation once the schedule is updated. — Mike
Why betterIt explains the listing-media impact, offers a specific replacement time and makes clear that the appointment is not operationally changed until a separate confirmation is sent.
Recommended stack
What to run this on.
Function
Tool
Why
Cost
Booking, service menu and gallery delivery
AryeoYou have this
Keep the system agents already know and the gallery workflow already tied to delivery. Do not replace the core platform during an intake-control project. Confirm API, webhook or supported Zapier capabilities before attempting direct order creation.
$99/month currently
Shared agent SMS and call history
OpenPhone
Northlight needs a business-owned communication history rather than Mike's personal iMessage archive. It supports a shared inbox, saved replies and a controlled booking number without putting a chatbot in front of agents.
About $19/user/month billed annually for Starter; verify current pricing
Structured booking and reschedule request form
Tally
It creates a mobile-friendly intake record in minutes and avoids asking agents to log into another portal. It is faster to deploy than a custom app and can feed Make cleanly.
$0 initially
Workflow automation
Make
Make can connect forms, Sheets, Calendar, Airtable, Dropbox and supported messaging actions with better branching than basic one-step automations. It should orchestrate exceptions, not replace Aryeo with unsupported browser automation.
About $10.59/month for Core; verify operation volume
Committed shoot schedule
Google CalendarYou have this
It is already the actual schedule. Make it authoritative for confirmed time, photographer, duration, access and drive buffers while Aryeo remains the client/order record.
Already owned
Production and editor status board
Airtable
Dropbox cannot show ownership, due time, revision state or root cause. Airtable provides a simple job board linked to existing folders without forcing editors into a full project-management suite.
$0 initially; Team about $24/user/month billed annually if needed
File transfer and archive
DropboxYou have this
Keep the file workflow the Manila team already uses. Add Job IDs, READY markers and Airtable status rather than migrating large RAW libraries.
Already owned; current plan cost not provided
Route optimization
Routific
It handles multi-stop routes, time windows, locked appointments and driver assignment better than planning mentally. Buy only after structured booking data is stable and a historical pilot proves savings.
Starts around $49/month; verify current pricing
Invoices and payment reminders
QuickBooks Online + StripeYou have this
The invoice and payment systems already work. Configure native reminder sequences instead of adding a separate collections product.
Already owned; current plan cost not provided
AI-assisted note formatting and operations analysis
ChatGPTYou have this
Use it for structured revision notes, SOP drafts and monthly root-cause summaries—not final image judgment, agent complaint handling or autonomous scheduling decisions.
About $20/month for Plus if a dedicated account is needed
Roadmap
First 30 · 60 · 90 days.
First 30 days
Stop losing text/DM bookings and make every accepted reschedule a confirmed calendar commitment
Outcome: Every direct request has a Request ID, every confirmed job is on Google Calendar and verified in Aryeo, and no reschedule can remain only in a text thread like Melissa's.
Day 1: create the Tally intake form, Intake Queue sheet and exact service/access fields.
Day 1: deploy the saved SMS/DM reply directing booking details to the form.
Days 2–3: build Make scenarios for request acknowledgement, calendar HOLD, confirmation, Aryeo-pending alert and night-before reconfirmation.
Day 3: ask Aryeo support about API, webhook and supported Zapier order creation; retain manual Aryeo verification unless officially supported.
Days 4–7: run five direct bookings and two reschedules in parallel with the old process; include one unmatched reschedule test.
Week 2: move the Northlight booking line to OpenPhone and start using its shared history and templates.
Weeks 2–4: track request-to-record time, confirmed jobs missing Aryeo verification, duplicate events and reschedules without YES confirmation.
End of day 30: require zero missed direct bookings and zero accepted reschedules lacking a written confirmation.
Days 31–60
Control editor handoffs and reduce morning production triage
Outcome: Every RAW folder has an editor, due time and visible status; Mike checks one exception digest instead of Dropbox and WhatsApp.
Build the Airtable production base with Job ID, statuses, editor, due time and root-cause fields.
Standardize Dropbox naming and use a READY marker or controlled /RAW READY folder.
Connect Dropbox to Airtable with Make and pilot five jobs in parallel.
Train all three Manila editors on Start Editing, Ready for QC and Revision Requested states.
Set 30-minute unclaimed-job and 6:45 a.m. exception alerts.
Begin tracking first-pass acceptance by editor and separate editing revisions from physical reshoots.
Pilot drone editing with one editor using ten historical and live sets.
Days 61–90
Hold next-day delivery at 200 shoots/month and remove repetitive follow-up
Outcome: Routes are planned from structured data, invoices average seven days or less to payment, delivery texts are automatic, and Sunday admin is eliminated.
Pilot Routific using one historical route and three live days; keep only if it saves at least 15 minutes per photographer day.
Configure QuickBooks reminders at three days before due, one day overdue and seven days overdue; add SMS only at seven days.
Trigger the gallery-ready SMS from a single Delivered status and suppress review asks for open issues.
Start 48-hour satisfaction checks and selective review requests.
Create a 60-day lapsed-agent view and review it monthly.
Review turnaround, missed bookings, editor on-time rate, revision causes, drive minutes and days to pay every Monday.
Validate real AOV and shoot count because the stated $260 AOV does not reconcile with $740,000 trailing revenue.
Scorecard
How you'll know it worked.
Metric
How to measure
Baseline
Target · Day 90
Direct booking capture rate
Count text/DM requests in OpenPhone and platform inboxes; divide those with an Intake Queue Request ID within 10 minutes by total direct requests.
Approximately 40% of 45 weekly jobs arrive directly; misses are known but not counted.
100% captured; zero missed direct bookings.
Confirmed jobs verified in Aryeo and Calendar
Daily compare Confirmed Intake Queue rows with Google Calendar Event ID and Aryeo Entered = Yes.
One-way/loose synchronization; Mike entered four and forgot a fifth in the cited evening.
100% by 4:30 p.m. the prior day; zero orphaned confirmations.
Reschedule confirmation compliance
For every changed event, verify new calendar timestamp, confirmation Sent At and agent YES where required.
No tracked process; Melissa's accepted Monday twilight was never entered or reconfirmed.
100% of accepted changes recorded within 10 minutes; zero missed reshoots/reschedules.
Next-day delivery rate
Delivered At minus Shoot Completed At; report percentage delivered by end of the next calendar day and percentage over 36 hours.
Usually 24–36 hours; sometimes two days during volume spikes.
At least 95% by end of next day at 200 shoots/month; under 2% over 36 hours excluding agreed weather/reshoot holds.
Editor claim and on-time completion
Airtable timestamps from Ready for Editor to Editing, and Due At to Ready for QC.
No board; at least one missed job in the example morning.
95% claimed within 30 minutes; 98% ready for QC by due time.
First-pass QC acceptance by editor
Jobs reaching QC Approved without Revision Requested divided by jobs edited, grouped by editor.
Unknown; 12 photos were returned across two jobs in the sample day.
At least 90% first-pass gallery acceptance, with no quality-standard reduction.
Revision/reshoot rate
Jobs with any rework divided by delivered jobs; report editor revision and physical reshoot separately by cause.
12%, about 22 jobs/month, currently blended.
10% or less total; 100% root-cause classification.
Average days to pay
QuickBooks Paid Date minus Invoice Date for all invoices paid in the month; separately report percentage open after seven days.
Three invoices were 12+ days late; some are not chased for three weeks.
Seven days or less average; fewer than 10% open after 14 days.
Owner low-value admin hours
Mike time-tracks booking entry, scheduling administration, editor status checks, repetitive follow-up and collections for one representative week each month.
15+ hours/week by Mike's estimate.
Five hours/week or less; no Sunday-evening admin.
Average order value and data reconciliation
Monthly recognized shoot revenue divided by completed paid shoots; exclude non-shoot revenue and taxes.
Stated $260, but $740,000 ÷ 2,160 annual shoots implies about $343.
One trusted AOV figure with less than 3% variance between Aryeo completed orders and QuickBooks recognized shoot revenue.
Repeat-agent share
Shoots from agents with at least one prior completed job divided by monthly shoots; also track 60-day lapsed repeat agents.
Approximately 55%.
60% or better without indiscriminate messaging; longer-term target 65%.
Risks
What could get in the way.
Agents keep texting Mike's personal number and bypass the controlled intake.MitigationUse a saved reply with the form link, put the OpenPhone number in Aryeo/email signatures and move every request into the queue before discussing availability.
Aryeo does not support external job creation on Northlight's plan.MitigationUse the structured Aryeo-pending queue and a daily five-minute verification step. Do not claim full automation or use screen scraping.
Calendar HOLD events are mistaken for confirmed shoots.MitigationUse yellow HOLD and green CONFIRMED titles, and state in every acknowledgement that only a separate confirmation locks the appointment.
Duplicate jobs are created from address formatting or repeated submissions.MitigationUse Request IDs, normalize address fields, search street number plus postal code and require human review on duplicate matches.
Automation sends the wrong message after a complaint, revision or payment.MitigationUse explicit Open Issue, Complaint and Sent At fields; test suppression paths; send review requests only after human-confirmed positive feedback.
Editors ignore Airtable and continue treating WhatsApp as the source of truth.MitigationRun one week in parallel, train each editor on three status actions, and reconcile editor payout only against completed board records.
Dropbox triggers before RAW uploads finish.MitigationTrigger only after a READY marker file is added or after Mike moves the completed folder into /RAW READY.
Route optimization creates unrealistic schedules.MitigationLock twilight and fixed appointments, encode capabilities, review every route manually and cancel Routific if a historical/live pilot does not produce material savings.
Northlight builds too much at once despite only having "a few hours total."MitigationComplete booking/reschedule control first. Delay Airtable, routing and retention until direct-booking capture runs cleanly for two weeks. If Mike cannot provide 4–6 focused hours, hire a Make/Airtable implementer for a fixed-scope setup.
ROI decisions use inconsistent business inputs.MitigationReconcile Aryeo completed orders, QuickBooks revenue and shoot count. The stated $260 AOV, 180 monthly shoots and $740,000 trailing revenue cannot all describe the same period.
What we'd skip
Not everything belongs to a robot.
Final image QCMike explicitly said, "my eye is what makes the business worth the money." AI may format notes and report causes, but Mike should approve color, verticals, sky realism, MLS compliance and final delivery.
Agent complaint callsA real complaint needs judgment, ownership and context. Automation should flag the job, gather facts and create a call task, not send a defensive or generic response.
Homeowner and occupant decisions on siteUnmade beds, pets, access problems and chatty occupants require tact and situational judgment. A checklist can reduce incidents but cannot safely decide whether to move belongings or proceed.
Automatic confirmed-time changesRoute software may recommend a change, but weather, sunset, access and agent expectations make autonomous rescheduling risky. A person should approve and communicate every change.
AI image enhancement as the primary editorNorthlight already tested an Autoenhance-style product and rejected its mixed-light interior color. Do not repeat that experiment while next-day reliability is the priority.
Browser automation that pretends to be an Aryeo APIA screen-scraping bot can silently fail when Aryeo changes its interface, recreating the exact missed-booking risk the project is meant to remove.
Automatic physical reshoot approvalSome issues are editor revisions, property-readiness problems or agent preference. Mike should determine remedy and cost responsibility before a second visit is committed.
Automatic suspension or charging of late-paying agentsBrokerage arrangements and relationship context vary. Reminders can be automated, but account restrictions and card charges require authorization and judgment.
Doing this yourself
An honest read on building it alone.
Total DIY time
Core 30-day booking/reschedule control: 5–8 hours. Full 90-day plan: approximately 17–25 hours spread across 12 weeks, excluding normal weekly scorecard review.
Hardest part
Making Aryeo and Google Calendar agree without assuming Aryeo offers unsupported order-creation access, then enforcing one intake process when agents are accustomed to informal texts.
Honest advice
Mike can build the first workflow by following the steps, but "a few hours total" is not enough for the entire plan. Build only the intake/reschedule control personally. If that takes more than one week or Make testing stalls, pay a Make/Airtable specialist for a fixed-scope implementation and require a recorded handoff. Do not buy a broad CRM, replace Aryeo or build a custom app.
Start here
Today, create the Northlight Booking & Change Request form and replace every new booking/DM response with: "Thanks for reaching out to Northlight. Send the property details here so nothing gets missed: {booking_link}. I’ll confirm the final date and time by text. — Mike" Then create a Google Sheet queue with Status, Calendar Event ID and Aryeo Entered fields.
45–60 minutes for the form, reply and queue; 4–6 additional hours to automate and test the complete first-month workflow.
This directly addresses the one stated priority—"Stop losing the text/DM bookings"—and immediately prevents another request from living only in Mike's inbox. It also creates the record needed to automate the calendar and reschedule confirmation without waiting for Aryeo integration.
The next 90 days
By day 90, Northlight has one controlled path for every text/DM booking and reschedule, zero commitments existing only in a message thread, and a daily exception report proving that Calendar and Aryeo are complete. Every Dropbox job has an editor, due time and production status; Mike still performs final QC but no longer checks WhatsApp and folders to discover what happened. At least 95% of jobs deliver by the end of the next day at 200 shoots/month, rework is classified and reduced from 12% toward 10%, invoices average seven days or less to payment, and routine Sunday-evening admin is gone.
Next step · Paid working session
Turn this plan into a real implementation plan.
What you're holding is the map — where your time goes and what AI can fix. In the working session we go deep: we walk this plan line by line, pressure-test it against how your business actually runs, and build a real AI implementation plan for your company — what gets built, in what order, and what it takes.
$297one-time · 60-minute working session
We go through this plan line by line
A real AI implementation plan for your business — what gets built, in what order
Your questions answered live
Secure checkout · Powered by Stripe
The plan above is free and yours to keep either way.
Optional add-on · The Blueprint
Want to build it yourself?
Add the Blueprint — a step-by-step guide that walks you through applying your implementation plan on your own, screen by screen, in the right order. Offered during your session.
patrn
Prepared by Patrn
A working session is available when you're ready to turn this into a build-ready implementation plan for your company.