Your optometry patients are sitting on benefits that vanish on 31 December

A practice with 3,000 active patients has somewhere between 400 and 800 people on its list right now who are eligible for something they have already paid for and will lose in about 11 weeks.
They paid for it through payroll. Eight or twelve dollars a month, every month, all year. An annual eye exam, a lens benefit, and a frame allowance that sits around $150 in network on a VSP Signature or EyeMed Select plan, and runs to $300 on a VSP Premier.
Most of those patients have no idea the clock is running. And the practice, in almost every case I have looked at, cannot produce a list of who they are.
Meanwhile that same practice is spending $1,500 to $3,000 a month on Google Ads to book 20 to 40 new eye exams. Cost per booked exam on optometry search terms runs $18 to $75 depending on how crowded the market is, with the median landing around $28 to $36.
So the practice buys strangers at thirty dollars a head while its own warm list expires on 31 December.
I wrote the complete build for this as a pro prompt: Optometry Practices, Vision Benefit Expiry Recovery Engine. It is a full Lovable blueprint, 23,000 characters of master prompt, 11 build steps and 9 sell-and-run steps, ready to paste and ship for a client before the December cliff.
Three reset clocks, and they do not line up
Here is why this problem survives inside otherwise well-run practices. Vision benefits do not reset on one schedule. They reset on three, and the practice-management system does not tell you which one a given patient is on.
Calendar year. Exam and lens benefits reset on 1 January. Anything unused on 31 December is gone. This is the most common pattern and the one everyone assumes is universal.
Employer plan year. The employer's plan starts in some other month, so the reset lands on that anniversary. An EyeMed Insight plan running a July plan year expires on 30 June, and a practice that sends that patient a "use it before 31 December" email has just told them something wrong.
Rolling from last date of service. The patient becomes eligible again 12 or 24 months after the exact day they last used that specific benefit. Davis Vision runs plenty of these. They never expire, they just sit there, which means they are worth less urgency and more patience.
Then the frequencies split. Lenses are commonly every 12 months while frames are every 24. One patient can be eligible for lenses and locked out of frames on the same day. Contacts are usually in lieu of glasses, so a patient who bought a year's supply in June has no frame or lens benefit left at all, even though the calendar says they should.
Work that out by hand, across every plan a practice accepts, for 3,000 patients. No front desk is doing that between a 10:15 and a 10:45 exam. So it does not get done, and the recall postcard goes out to everyone with the same generic "time for your annual check" line, which is the weakest possible version of the message.
What the build actually does
The blueprint produces a staff-facing web app. Patients never log in. They get messages and click through to book.
It starts with a CSV export from whatever the practice runs on, RevolutionEHR, OfficeMate, Crystal PM, Compulink. The import screen maps their columns, then uses the OpenAI API for one narrow job: matching messy plan strings onto a plan rules library. Real exports contain "VSP Choice", "vsp-sig", "V.S.P. Signature" and "EYEMED SELECT" as four separate values that mean two plans. Anything the model matches below 0.8 confidence lands in a review list for a human. It never invents a plan rule.
That plan rules library is where the actual intelligence lives, and it is the part you build with the practice owner sitting next to you. Each plan gets a reset type, a frequency per benefit, a frame allowance, and the copays. Eight realistic starter rows come pre-seeded in the master prompt so you are editing rather than starting blank.
Then a nightly engine walks every active patient and every benefit type and works out four things: whether they are eligible right now, the date that eligibility disappears, roughly how many dollars are on the table, and a confidence level with its reasons attached. High confidence means a matched plan, service history inside 36 months, and a working email or mobile. Low means something is missing, and the UI says so rather than pretending.
A scoring formula then ranks them. Estimated dollars multiplied by deadline urgency, multiplied by how likely that patient is to buy. Fourteen days to expiry carries a 3x multiplier. A patient who has bought optical before gets a bump. A patient logged unreachable twice gets pushed down, so the front desk stops burning calls on the same five people.
Alongside the queue, a three-wave campaign runs itself. A long itemised email 90 days out that explains which of the three reset patterns their plan uses. Email plus SMS at 45 days. A short, direct SMS at 14 days. Every wave stops dead the moment the patient books, replies STOP, or gets logged as declined.
The owner-facing dashboard carries one number that tends to renew the retainer without you asking for it: total benefit dollars still unclaimed across patients who are eligible, unbooked and not opted out, with the nearest expiry date next to it. There is a chart of that figure plotted by week to expiry, so the owner can see the cliff at the end of December as a shape rather than a claim in an email. Put that screen up early in the demo.
One patient, from import to appointment
Take Test Patient 14, because the build seeds 60 of these so you can demo it before you have a client.
She is on EyeMed Select, a calendar-year plan with a $130 frame allowance, lenses every 12 months, frames every 24. Her last exam was 19 months ago. Her last pair of glasses was 26 months ago. She has bought optical from this practice twice before.
The engine runs at 2am and returns: exam eligible now, expires 31 December. Lenses eligible now, expires 31 December. Frames eligible now, because 26 months clears the 24-month frequency, expires 31 December. Estimated unused value of about $385 once you add the exam fee net of copay, the lens share of the practice's average optical ticket, and the frame allowance. Confidence high.
Today is 15 October, so she is 77 days out. Urgency multiplier of 1.4. Capture likelihood of 0.9 because of the two prior optical purchases. Her score puts her near the top of the queue.
Wave 1 email goes out with her reset date in the subject line. She does not click. At 45 days she gets the email again plus a text. She still does not click, but she does read it, which is most of what a text does.
On 20 November the front desk works down the queue. Her row shows three eligible benefit chips, an estimated value, a 41-day countdown, and a flag saying her last frames were 26 months ago so pull three in her recorded style and price band before she arrives. The staff member clicks Verify, opens the EyeMed provider portal in another tab, confirms she is eligible with a $130 frame allowance, and types the real number in. The estimate is now a verified figure with a name and timestamp against it.
Then she calls her, reads the script, and books her for the 28th. The campaign stops automatically. When she attends, the optician already has frames on the table.
That visit is worth somewhere between $500 and $650 with a complete pair behind it, against a median annual revenue per patient of about $420 in optometry and revenue per complete exam benchmarked at $306 to $484 before optical.
The rule that keeps this sellable
This build has no live carrier eligibility feed. VSP, EyeMed, Davis and Spectera do not hand out public eligibility APIs to a tool you wrote last Tuesday. Every figure the engine produces is an estimate from the practice's own records plus the plan rules they entered.
Which is fine, as long as you build like it is true. So the blueprint makes that constraint structural rather than a disclaimer in small print.
Every dollar figure on screen carries an "est." marker and a tooltip explaining what it was calculated from. No staff member can quote a number on the phone until they click Verify, check the carrier portal, and record the real amount with their name against it. Once a verified figure exists, the estimate disappears from the UI entirely so there is nothing to confuse. And a verified eligibility of $0 pulls the patient off the queue completely.
Patient messages carry no guaranteed amounts at all. They say "your benefits reset on this date and our records show you have not used this year's", with a booking link. That is both honest and, as it happens, a better message, because the specific date does the work and the dollar figure would only start an argument.
Get this bit wrong and the practice fires you in week two, after the third patient arrives expecting $300 they do not have.
Who should build this, and what it pays
Sell it to independent optometrists with 1 to 4 locations, 2,000 or more patients on file, and their own dispensary. The dispensary matters: optical is 50 to 65% of collections at a profitable practice, so a recovered exam drags real revenue behind it. An ophthalmology practice with no optical bench has thinner economics and a harder sale.
Skip the corporate-owned locations. A Target Optical manager cannot buy software.
The qualifying question takes 30 seconds on the phone: how many of your patients have unused benefits expiring this December? They will not have an answer, and the pause on the other end is the whole sale. You do not need a slide deck to get there.
On pricing, the full structure sits in the build and sell playbook, but the shape is this. Setup runs $2,500 to $4,500, charged at the top end when a practice accepts more than 15 plans or hands you a messy export. Monthly retainer of $397 to $697 covering hosting, the recovered revenue report, campaign copy tuning and plan rules maintenance, with SMS and email passed through as a visible line item at $40 to $120 a month depending on the season.
The one that closes fastest is the performance bonus: 10% of collected revenue from campaign-sourced appointments for the first 6 months, capped at $1,500 a month, invoiced against the dashboard's own attribution figure. Practice owners say yes to that far more readily than to a bigger retainer, because they can see precisely what they are paying on.
There is also a Q4 sprint option at $1,950 flat for a November and December calendar-year run with no retainer attached. It exists to close the practice that will not commit in October. You convert them in January once they have watched December work.
On the results side, a well-built list usually books at 8 to 15%. Optical capture on those visits tends to run at or above the practice's own baseline, which sits around 50 to 55% for most independents against 60 to 75% at healthy ones and 78% plus in the top quartile. A patient who came in specifically to spend an allowance arrives already intending to buy, which is a different conversation from the one the optician normally has.
Why the timing is tight right now
It is 15 October. The calendar-year cohort has 77 days left.
The build itself is a day for a competent operator, two if the export fights you. The plan rules session with the client is 60 to 90 minutes. The import, pilot and training add up to another day or so spread across a week.
The long pole is A2P 10DLC registration. US carriers filter unregistered business SMS, so the practice's brand and campaign have to be registered under their own legal entity with their EIN, and carrier review takes 1 to 3 weeks. It does not move faster because your client signed late. Submit it on day one of phase 2 and build everything else while it sits in the queue.
Which means a practice that signs this week can have the full three-wave sequence running through November and December. A practice that signs on 1 December gets email only, and the text messages show up in January for the plan-year cohorts instead.
Both are worth building. One of them is worth a lot more in the next 11 weeks.
Get the blueprint
The complete pro prompt is live now: Optometry Practices, Vision Benefit Expiry Recovery Engine.
You get the 23,000-character master prompt with the full data model, the eligibility engine logic for all three reset patterns, the scoring formula, the campaign templates, 14 named edge cases and 10 acceptance tests. Plus the 11-step build phase with every tool setup click by click, the 9-step sell-and-run phase including the HIPAA and BAA work that usually gets skipped, the full pricing structure, and a cold outreach script you can send today.
The final build step ships it through AppBuild.DIY as a real iOS and Android app with push notifications, because the front desk works this queue standing up between patients and a push about a new reply gets acted on inside the hour.