v9.3908.0
🛒 "This week" for buyers, behind a switch that is off (marketplace_this_week, under storefront_v1).
Changelog
Every user-impacting change to CannAgent, in reverse chronological order. 1088 shipped versions across 98 ship days. Internal refactors + build-gate fixes don’t make this list — they’re in the codebase if you want them.
2 shipson October 5, 2026 · most recent ship day
Why a public changelog
Most cannabis-POS competitors hide the cadence — quarterly press releases, marketing-copy patch notes, fluffy “new and improved” framing. We surface what shipped + when so operator evaluators can see the actual pace. We run this list by hand; if a version is on it, an operator can verify it landed in production.
v9.3908.0
🛒 "This week" for buyers, behind a switch that is off (marketplace_this_week, under storefront_v1).
v9.3900.0
Signed-in store pages, the sign-in page included, no longer load analytics, the referral tag or the sales chat.
v9.3886.0
🔎 Found but not used is not "not found".
v9.3884.0
/washington reads Washington's status from the one public list of states.
v9.3874.0
The state section of llms.txt and llms-full.txt is now generated from the public state list (PUBLIC_STATE_PLAN) by scripts/gen-llms-state-section.mjs, which runs before every build and at the start of every pre-push.
v9.3870.0
📅 Month-name dates are read. "Sep 1, 2026", "September 1, 2026", "Sept 1 2026", "1-Sep-2026", "1 Sep 2026" and "01-SEP-26", in any case.
v9.3868.0
🤝 A supplier introducing a store gets its own words.
v9.3866.0
One public list of states, with launch targets.
v9.3858.0
🎞️ A setup presentation driven by real events.
v9.3856.0
🪪 No more made-up license status.
v9.3854.0
🏷️ Public pages use the product's public names.
v9.3850.0
📅 Unreadable sale dates say so.
v9.3842.0
🪪 A reply was addressed to nobody, on a page served to everyone.
v9.3806.0
🗂️ The board never said how to get rid of a card.
v9.3794.0
⏳ The warning steps restart when grace ends.
v9.3790.0
⏳ Grant grace now lasts until it ends.
v9.3758.0
📵 llms.txt and llms-full.txt stop describing a text-message alert for till variance.
v9.3748.0
Marcus, the website chat assistant, no longer names the founder anywhere a visitor sees it.
v9.3744.0
🧹 /for-suppliers stops describing store data reaching a supplier.
v9.3714.0
🔑 Signing in on a store's own address lands in the account.
v9.3658.0
🧹 Store results on this site now come only from outside stores that approved them in writing.
v9.3654.0
/integrations now states no status the catalog does not hold.
v9.3566.0
🛑 A public page invited a prospect onto a demo call to watch something that cannot happen. /wins claimed a till-variance text alert at the lowest threshold, titled the tile after it, carried it in the page metadata — and then, the expen…
v9.3548.0
🗺️ /states now opens with a clickable map, and every state in the registry records what is known about how its transfer manifests carry package weight.
v9.3534.0
Four places on the public site named the founder by first name.
v9.3526.0
Took down two descriptions on the supplier pages that went further than the portal does today.
v9.3524.0
🎯 “Arrive → qualify → book a time” — and the last step existed only in email.
v9.3522.0
🎯 The quiz hand-off only survived ONE click path, and that is the likeliest reason two columns read zero. /demo's attribution engaged only when ?source=diagnostic and ?picks= were both in the URL.
v9.3520.0
🎯 The funnel asked the same question twice, and the second time it was required and blank. /diagnostic's “Current system” field is labelled *“The POS you use today”*. /demo's required “POS / register” field asks for *“the register software you ring sales on”*.
v9.3500.0
🧹 Eleven small fixes from three reviews, each with its own test.
v9.3490.0
🙈 The public diagnostic quiz no longer names any rival.
v9.3484.0
🔚 A lead escalation could be raised and read, and never closed. lead_escalations had exactly two touch points in the whole tree: an INSERT in lib/lead-marcus/index.ts and a SELECT … WHERE state = 'open' on the Marcus queue page.
v9.3482.0
⚖️ The published retention claim on /privacy cited the wrong section and credited our own policy to the rule.
v9.3480.0
🚪 The ask gate opened and nobody was ever shown the room.
v9.3474.0
✍️ The sentence an operator types into the quiz now survives the hand-off to /demo. /diagnostic Step 3 promises, above its textarea, that we read every one.
v9.3472.0
✨ A new tip or walkthrough piece now shows up on the screens Kate actually opens.
v9.3466.0
📥 The quiz has been asking who your current provider is since v0.21, and the answer had never once reached the database. /diagnostic Step 4 is a live, controlled-vocabulary select — 8 catalog vendors plus a renewal month — and its submi…
v9.3464.0
🔀 After a prospect submits the demo form, they now see how CannAgent compares with the system they run today.
v9.3460.0
🩸 The large-fleet auto-draft refusal was blind to every chain, and the quote line told chains they had one register. /demo splits one answer across two columns (Doug 2026-06-02, api/demo-request/route.ts): a single-store prospect's regi…
v9.3402.0
Every row in the growth workspace was placed by a seed, and only a document said so.
v9.3392.0
🧭 The running tour now covers your whole workspace, not one suite — and it finally mentions what shipped today.
v9.3390.0
🪪 An account that already existed could never learn its own name.
v9.3388.0
✍️ An email now signs whoever sent it.
v9.3386.0
🗂️ The live-call screen now tells you what to ask NEXT time, tailored to what they said this time.
v9.3384.0
🧭 The one place that answers "what needs me" was missing a quarter of the answer.
v9.3382.0
💬 When somebody writes in a plan section after you, the plan now says so.
v9.3380.0
🎯 One place now answers "what needs me" — Admin → Today, at the top.
v9.3378.0
✋ If you approved a post and the wording changed afterwards, the calendar now tells YOU — not just whoever happens to open the page.
v9.3374.0
🔔 A to-do on the board can now tell the people who care that it moved — the same ping the ideas board got, on tasks.
v9.3366.0
📖 Ready answers for the year, not the sale — nine things a customer needs us for after they sign, on Admin → Support.
v9.3364.0
✍️ The post-demo recap now fills itself from what the prospect actually said — in their words, not a summary of them.
v9.3362.0
🧭 The live-call screen now says what the next meeting should be, from the answers you recorded — and names which answers decided it.
v9.3360.0
🏷️ The "Director" role is now called "Growth".
v9.3356.0
🗣️ The live-call screen now records what a prospect actually SAID to each discovery question — and shows what that changes, next to the answer, while you are still on the call.
v9.3354.0
🔔 Tagging someone on an idea now actually reaches them.
v9.3352.0
🔄 The walkthrough updates itself, and is back on the menu.
v9.3350.0
💡 Ideas have somewhere to go.
v9.3292.0
🏠 A CRM home at /admin/crm.
v9.3280.0
🕕 Nineteen dates on staff screens were reading as tomorrow every evening, and now read the day it actually is.
v9.3276.0
📣 A customer asking to move to a bigger plan was told someone would call them back, and nothing in the system was holding that promise.
v9.3270.0
📅 Dates on the customer's own account pages could show tomorrow.
v9.3268.0
✅ Log a touch in two taps, right under the account's next step.
v9.3266.0
👤 Accounts can be Kate's.
v9.3264.0
💵 The page where a customer authorises payment was rounding the amount.
v9.3240.0
🛑 A shared /demo link no longer promises a demo on the store's own data.
v9.3230.0
📞 The phone number is on every page.
v9.3228.0
🛑 The site no longer offers source-code escrow.
v9.3226.0
🗣️ Marcus says the company name as two words on the phone: Canna Agent.
v9.3218.0
📄 The file AI search reads listed payroll and People Ops as add-ons a store can buy.
v9.3216.0
🧾 The sample receipt is a sample shop.
v9.3214.0
📬 You can reach a person from every page.
v9.3212.0
🛑 The files AI search reads told it a crypto payroll option was available.
v9.3208.0
🟡 The demo pages now say CannAgent is in pre-release. /demo and the page you land on after asking for a demo were written for a product already signing stores: they end in a cutover scope and a fixed quote.
v9.3194.0
🔌 A licensee can now see their own state-reporting status.
v9.3150.0
🐛 An unsubscribe that fails to save no longer says you are unsubscribed.
v9.3148.0
🩸 Both Oklahoma municipal tax figures on the state page were OVERSTATED, and a prospect reading them would have budgeted too high.
v9.3134.0
Growth → Pulse now shows what Radveo found about your marketing — what it learned, what it suggests, and what acting on it would and would not change.
v9.3113.0
🏦 A BANKER CAN READ /trust NOW.
v9.3109.0
🩸 THE SUPPLIERS PAGE WAS ASKING PRODUCER REPS FOR THEIR STORE. /for-suppliers shipped last night and renders the shared ask-gate, whose paragraph is written for a dispensary operator.
v9.3099.0
🇦🇿 Arizona's two rule citations have now been read at the source.
v9.3090.0
The file AI assistants read about CannAgent (llms-full.txt) no longer says a New Jersey customer store has been live since May 2026.
v9.3085.0
New page, /for-suppliers: the one a producer's sales rep hands a retail buyer, and the one a rep lands on asking what they would get at a CannAgent store.
v9.3077.0
The Radveo page is rebuilt around what you do with it.
v9.3070.0
Supplier introductions are now counted.
v9.3057.0
On the Radveo pulse page, an unmeasured week no longer shows as 0 clicks or 0%, a client whose engines are on their first reading sees 'first readings' instead of 'a steady week', a Radveo answer that times out says it may still have act…
v9.3055.0
Vendor portal page (/vendor-portal): rewritten for the people who read it, the producer's sales rep and the operator who hands out the login.
v9.3050.0
Washington page, checked again against the statute and the Department of Revenue on September 25, with four corrections.
v9.3040.0
State pages: we re-read the medical-patient age rules for all 17 states that list them, against each state's own statutes and rules. 13 were right.
v9.3010.0
The /trust page no longer says a SOC 2 engagement is "scoped" or that a penetration test is "scheduled".
v9.2989.0
The Radveo pulse page gains a 'What Radveo replaces' card: for the last 30 days, what Radveo did in place of each system a business would otherwise run separately (an AI-visibility monitor, a rank tracker, a Search Console dashboard, a c…
v9.2982.0
On the Radveo pulse page, 'open in Radveo' links work again: a successful sign-in link was being reported as 'could not reach the server' and never opened.
v9.2927.0
On the Radveo pulse page, a lost connection mid-click now shows a message instead of replacing the page (and keeps what you typed), a Radveo reading in an unexpected shape shows that card's 'not readable' line instead of breaking the pag…
v9.2905.0
The payments code now says only what is true.
v9.2883.0
The trust and privacy pages now list the same vendors, and only the ones we actually use: billing runs through GoDaddy Payments, sign-in through Clerk, our support line through Retell AI and Twilio, demo bookings through Calendly, and ev…
v9.2864.0
CannAgent no longer publishes prices: /pricing now explains what the base includes, how the rate lock works and the twelve-month term, and sends the price question to the ask form and the demo request; the pricing calculator is gone and…
v9.2853.0
The home page now leads with one line, one login runs the whole dispensary, and a two-sentence pitch in plain terms.
v9.2852.0
On the Radveo pulse page, the top sentence names a week where AI assistants moved both ways ('A mixed week: named more often on ChatGPT, less often on Gemini') instead of calling it steady.
v9.2851.0
Each module card now carries a small illustration, and the same picture heads the ask form and the module's landing page, so the fourteen modules read at a glance instead of as a wall of names.
v9.2847.0
Every way a demo login can be issued now passes through the same release check, so the NDA requirement, when it is turned on, applies to the public form and to follow-ups the same as to a reviewed approval.
v9.2845.0
On the Radveo pulse page, approving a draft now keeps its result on screen after the list refreshes: you see 'Published at' with the link, or the reason it did not publish.
v9.2843.0
The alarm that flags a lead nobody was told about now actually fires.
v9.2841.0
The savings estimator on the pricing page now compares what you pay today, typed by you as one number, against our published rates.
v9.2838.0
The admin home's on-deck strip now shows how many Radveo items need a hand today (drafts waiting for a decision, a disconnected Google account, this week's ask).
v9.2837.0
Operators' own words can now stand in for the detail we took off the site.
v9.2831.0
A signed non-disclosure agreement's PDF now says so in its subject and footer instead of calling itself a client contract.
v9.2830.0
On the Radveo pulse page, a creative request that Radveo refuses keeps what you typed instead of clearing the form, and the placements box counts what you have named (two to eight) before you send it.
v9.2827.0
Two shared lines that still named another platform, one in the questions and answers and one in the pricing feature list, now describe the system generically.
v9.2823.0
The public site no longer names other platforms anywhere: not in page copy, not in the search keywords, not in form hints, and not in the web addresses of the cutover module and the migration walkthrough.
v9.2819.0
A non-disclosure agreement now exists alongside the contract.
v9.2813.0
After someone asks about a module, the screen now says what the email says: a free sandbox built for them and a live walkthrough, set up by hand.
v9.2809.0
The state pages and the operator guides now read in plain terms.
v9.2803.0
Front door, phase 2b: the feature landing pages, the cutover page, the about page and the use-case pages now describe what a store gets in plain language — the table names, admin routes, job schedules, dollar and day thresholds, integrat…
v9.2797.0
Nine pages that explained how CannAgent is built (Co-Pilot, the operator pages and the payroll reference, the vendor portal, the pitch, the walkthrough, the diagnostic results and the full trust posture) now show a plain-language version and one ask to anyone who has not asked.
v9.2791.0
A quote is now built feature by feature: each add-on can be quoted for a number of months at its own discount, the quote carries a default term, and the builder writes a real draft quote that goes through review, send, acceptance and the…
v9.2787.0
Contracts now begin.
v9.2781.0
Front door, first pass: the public site stops naming rivals and stops showing how the build is wired.
v9.2777.0
A module ask now reaches a human.
v9.2771.0
Second review round on today's work.
v9.2768.0
The Radveo pulse page opens the full Radveo already signed in, and starts with Today.
v9.2767.0
The module landing pages are high-level now.
v9.2761.0
Launch-partner copy corrected before any state shows it: no pricing phrase (the Letter of Understanding represents uniform rates, the reason the founding-operator offer left the pricing page in August), the track-and-trace caveat kept be…
v9.2758.0
Ask Radveo for a creative asset from the pulse page: a five-second hero video, an animated Google post, a product or storefront still, or a social card.
v9.2757.0
Review fixes on today's work.
v9.2751.0
How a lead got there is now a filter.
v9.2747.0
State pages can name a launch month and take launch partners.
v9.2741.0
A margin-audit run can be recorded on the lead's timeline with one click.
v9.2737.0
Linking a lead to its licence account now says so.
v9.2723.0
Margin audit, first cut (the intake Doug described on September 24): from a lead's page, load one product or sales CSV from their point of sale and see margin by product, vendor and category, the lines sitting under their category's medi…
v9.2717.0
A lead can be linked to its licence account with one click.
v9.2711.0
Every reach count on /admin/growth now opens the licences it counted.
v9.2702.0
A /modules ask now really gets an acknowledgement email.
v9.2689.0
Approve a Radveo draft without leaving CannAgent.
v9.2688.0
Radveo articles now land on cannagent.ai.
v9.2685.0
Radveo, inside CannAgent: /admin/growth/pulse reads Radveo's stored measurements for cannagent.ai over the new Radveo partner API and lays them out in the growth suite: the weekly verdict and the one ask, AI visibility by engine with the…
v9.2684.0
The detected vendor stack (POS, online menu, loyalty, and the rest) now reaches a prospect's customer card.
v9.2683.0
A new admin role, Director: every lane that exists today (sales, lead, manager, support, marketing) and none of the company ledger.
v9.2681.0
Growth suite: six pages are parked as concepts behind one switch — graphics studio, brand assets, event kits, partners, the Radveo readout and the what's-new tour.
v9.2680.0
One catalog page, and it is called Modules.
v9.2679.0
The leads page showed "prospects table unreadable" over a list that was fine: the drawer Timeline query failed on Vercel with Postgres 42P18 while the same query passed from a laptop against the same database.
v9.2678.0
The graphics studio opened on a 157-character line in a 120-character field — the counter read over-limit and the preview was already trimmed before anyone typed.
v9.2677.0
📄 The trust page listed write-ups and hire-date or termination changes as kept for 24 months.
v9.2676.0
📄 Two Washington citations on our public pages pointed at laws that say nothing about what we cited them for.
v9.2675.0
📄 The Washington page now states the current exterior-sign limit: up to four signs of no more than 1,600 square inches each, plus up to two trade name signs.
v9.2674.0
📄 Every law our state pages cite outside Washington — 106 citations across 23 states — was read today on the state's own legislature or regulator site.
v9.2672.0
📄 The Illinois page named the state's medical cannabis law by a title it has not had since 2019.
v9.2670.0
📄 Thirteen places still told people our contracts are month-to-month from day one.
v9.2669.0
📄 Sixteen days before Connecticut's per-milligram cannabis excise is repealed, the page describing our Connecticut coverage still listed that per-milligram math among the things our coverage is built on, in the present tense and with no end date.
v9.2668.0
📄 The marketing copy attached a Washington cannabis screening layer to the FCRA hiring background check.
v9.2667.0
📄 The pricing page told buyers the commitment goes one way — ours to them — and that they stay month-to-month.
v9.2666.0
🗺️ Two state pages named the mandated track-and-trace system without saying what we actually do with it.
Showing the 150 most recent versions of 1088.
Want to see what is inside? Tour the modules or request a demo.