Changelog · updated 30 Oct 2026
What shipped.
269 changes in the last 30 days across odilelabs.com, After Hours and Dusklin, taken from the commit messages; if it is not in a commit, it is not here. Updated 30 October 2026.
30 October 2026: client report pages and retests in Odile Agent Ops
Every Agent Ops plan now includes an agency console with each line’s latest results, open issues and next run, and a private report page per line to share with a client: the last 8 weeks of scored calls with their transcripts. After you fix a failed scenario, request a retest from the console; it runs inside the line’s calling window and counts toward that week’s calls. See the plans.
30 October 2026: the Odile CLI
Try Odile Gate from a terminal with no sign-up: npx -y github:tolga-boop/odile-cli#v0.1.1 sandbox creates a free Gate project in front of a demo API, gives one agent a key that may only read tickets, and shows one allowed call and one refused call. odile gate <tool> runs any Gate tool on your saved project, and odile lookup is a free Odile Direct lookup by phone number. Keys are saved in ~/.config/odile/cli.json (mode 600) and never printed. Source: github.com/tolga-boop/odile-cli.
30 October 2026: idle app keys in Odile Gate
Gate now flags an app whose key has made no allowed call for 14 days (each project chooses 1 to 90): the dashboard shows “idle since” with the date, and gate_metrics lists idle apps. With an alert webhook set, Gate sends one message per app when it goes idle. Gate never revokes a key on its own; a retired agent’s key is yours to revoke. Read the guide.
29 October 2026: booking cancellation for agents
Odile Direct agents can cancel a booking they made: send cancel_booking with the booking_id and cancel_token from the booking result. Cancelling is free; the booking's 5 credits are not refunded. The business is told once.
29 October 2026: team sign-ins
Owners can invite employees by email from Settings > Team. Each gets a one-time link and their own sign-in, which opens only the customer list, calls and messages. Every card edit records which team member made it. Removing someone, or Sign out on every device, ends their access. Read the Odile One questions.
24 October 2026
OdileM2M brings the existing Direct, Gate and answering-line tools together: a free demo quickstart, opted-in claimed listings, a booking challenge and machine-readable credit prices. Try the demo challenge.
Direct signed receipts describe Odile's recorded task outcome. Check a receipt's signature in your browser. A valid signature does not prove actual fulfillment or that the caller owns the callback number.
Direct policy and Gate
Bind a Direct developer key to an active Gate app and run, read an account task audit and review each business's agent policy. Business owners can require approval for bookings above their threshold; approvals bind the exact request and expire after 30 minutes. Read the Gate headers and approval steps.
Informational voice pilot
A default-off, account-enabled call_business pilot reserves its call cap before dialing. In credits mode, answered calls cost 2.5 credits per minute by the second, with a 20-second minimum. Ready Odile receivers can use a spoken task code; existing agents need a reviewed tool and prompt update. Free-only connectors cannot start paid voice. Read the pilot limits.
Added
- odilelabs.com White-label resale for agencies and answering services is back: branded demos from the partner portal, first line free for 30 days, then $99 a line a month wholesale.
Added
- odilelabs.com Add Odile Gate idle app keys to /gate, /pricing, llms and the changelog: an app whose key makes no allowed call for 14 days (each project chooses 1 to 90) is flagged idle since that date, with one optional alert per idle stretch; Gate never revokes a key on its own (live on gate.odilelabs.com 30 Oct)
Changed
- odilelabs.com Direct cancel_booking in the public docs: OpenAPI skill schema, llms.txt sentence, 29 October changelog entry
- odilelabs.com llms.txt + llms-full.txt: Odile Formats and the Plate API meal-photo estimate have their own MCP address, odilelabs.com/mcp/formats; /mcp no longer advertises Formats jobs
Changed
- odilelabs.com Home hero: 'Try it live' card. Type your website, watch Odile read it and greet callers as your business, or run the free Gate agent scan
- odilelabs.com Retire the $149 AI-ready upgrade and AI-ready for stores (websites stay $399 once)
- odilelabs.com Keep the 'Talk to us now' name in the website-button lines on /pricing, /afterhours and llms; the talk-or-type wording stays in the sentence
- odilelabs.com ERC-8004 card carries its on-chain registration: agent ID 1140693 on the Base Identity Registry; discovery tools can now match the card to the registry entry
- odilelabs.com Pay per resolved conversation on /pricing, /afterhours and llms ($0.49 each, packs of 50 for $24.50 or 200 for $98
Changed
- odilelabs.com Home page: the receptionist hero takes the website itself (paste it, hear your receptionist; any business, any country, no sign-up; posts to /hear/site), fonio's funnel
- odilelabs.com /try: paste your website and hear a receptionist answer as your business, in your site's language; any business, any country, no sign-up; the four taps stay below for no website. Changelog 27 Oct. 340/340
- odilelabs.com Direct push notifications on the crawler surfaces: llms.txt and llms-full.txt describe pushNotificationConfig next to Direct over Gate
- odilelabs.com llms.txt: Point agents without an account at the self-serve storefront key path (POST /a2a/v1/store/orders; human pays; api_key returned once). Lines drafted by another agent 27 Oct, verified live (doc 200, endpoint 400 on empty order) before applying.
Changed
- odilelabs.com Text follow-ups are live since 07:06 (2nd A2P campaign CRJP8AQ VERIFIED, TEXTS_CAMPAIGN=on in voice-agent b7751f7): /afterhours, llms.txt and llms-full.txt stop saying 'not available yet' and state the consent rule
- odilelabs.com After Hours FAQ: the 32-language answer without a bare URL (the Dusklin mirror rewrote it to a page Dusklin does not serve)
- odilelabs.com Contact: WhatsApp +1 561-916-6642 takes messages and calls, free from any country (Meta tier 2,000 reached 25 Oct; call proven 13:51 ET)
- odilelabs.com /sms: texts come from phone numbers we own (follow-ups use a second sender)
Changed
- odilelabs.com /sms + privacy: third opt-in path for on-call text-follow-up consent
- odilelabs.com llms: add the agent referral (30% of referred developers' Direct credit purchases, credits only) and separate it from the affiliate and customer referral programs
- odilelabs.com Direct claim on a call: llms.txt + /m2m say a business can claim its number by calling (561) 375-2995 or WhatsApp and asking Odile
- odilelabs.com Text Odile is live: llms files and OpenAPI say how people use it (WhatsApp +1 561-916-6642, (561) 375-2995), participating businesses only, confirm first, STOP
- odilelabs.com /callback: the stored page is the one the browser reports (Referer), so say 'when the browser sends it'
- odilelabs.com /callback: Instant Callback page (web leads called back in about a minute), linked from /afterhours, /one, /pricing, both llms files and the sitemap
- odilelabs.com Part D: document the capped informational voice pilot and minute rates
- odilelabs.com Part C: document Direct Gate policy, audit and approval contracts
- odilelabs.com Part B: document signed Direct receipts and browser verification
- odilelabs.com Publish approved Direct send prices across site copy
Added
- odilelabs.com Add native OpenShell integration to Gate product and pricing
Changed
- odilelabs.com docs: refresh generated history for one-command OpenShell setup
- odilelabs.com [verified] Add one-command OpenShell and Gate setup discovery
- odilelabs.com Refresh generated product history with native OpenShell integration
Fixed
- odilelabs.com Correct sitemap dates for updated native integration surfaces
Added
- odilelabs.com Add gate_metrics and get_direct_usage visibility
Changed
- odilelabs.com Refresh signup sitemap dates after email OTP release
- odilelabs.com Document response redaction and configured merchant payment receipts
- odilelabs.com Update public history with Gate metrics and Direct usage
Added
- odilelabs.com Add the Gate and Direct service guide for AI agents
- odilelabs.com Add Gate Setup Check for reviewing agent permissions
Changed
- odilelabs.com Update public history with agent service discovery
- odilelabs.com Update public history with Gate Setup Check
- odilelabs.com Plumbers page leads with After Hours $199 like every trade; the $299 bundle is an optional upgrade
- odilelabs.com After Hours in any country (copy): footer on 111 pages, about, afterhours, pricing, phone-systems, llms, JSON-LD say outside the US and Canada the line answers over SIP in US dollars; ships with the voice-agent worldwide signup
- odilelabs.com Homepage hero: the flowing dots from our Instagram covers, moving (brand blue/grey + product colours, faint behind the headline, still for reduced motion, paused off screen); /gate: the two 9:16 clips side by side instead of one tall left column
- odilelabs.com llms.txt + llms-full.txt: 'Developer tools for AI agents' entry says what we solve (Direct: reach a business with no API; Gate: keep an agent inside your API; phone line 25c a minute); phone entry points at /developers#phone
- odilelabs.com Direct film v2 captions + cover under new names (media files are cached immutable for a year)
- odilelabs.com /gate leads with Gate Actions ('Let an AI agent do the job, not everything') and a 29 s demo clip of a real run (allowed 200, other customer 403, approval 202 then sent once, retry 409 already_executed); Direct film captions + cover for the fixed custom-connector ending
- odilelabs.com /gate: the plain-English Gate explainer (42 s, captions); posters + captions for both explainers (Direct's plays on /a2a)
- odilelabs.com Privacy: Odile Direct counts lookups of numbers that are not on Direct (number, how, user agent; no IP; up to 3 months; only to decide whether to tell a business)
- odilelabs.com Gate Pro: $10 per extra million past the included 1,000,000 (keeps working up to a limit you set) on /gate, /pricing, the loops guide and llms.txt
- odilelabs.com llms.txt: Gate declarative config (odile.yaml, validate/sync, MCP gate_sync_declarative)
- odilelabs.com llms.txt: Gate next level (delegated runs, recovery hints, opt-in learning, hash-chained audit + signed export, run timeline) and Direct book_first_available
- odilelabs.com Retire the $99/line white-label agency resale; agencies now contact us
Changed
- odilelabs.com /gate + llms.txt: Gate recovery of a lost reply
- odilelabs.com /gate + llms.txt: Gate v1.1: approver keys, no-card actions quickstart, JS client, three guides
- odilelabs.com /gate + llms.txt: Gate Actions and the one storage exception (a held call, encrypted, until approved/rejected/expired)
- odilelabs.com Home: After Hours on top (Guard below), plain how-it-works card instead of the developer terminal, Start free -> /signup/quick, no-charge line; terminal moved to its own developer section
- odilelabs.com /gate meta description: drop the setup link (its quotes broke the tag: cut-off description in search/previews, stray text above the nav)
- odilelabs.com Homepage leads with the business owner: 'Every call answered, even when you can't pick up', $199 free until first job, hear-your-own CTA; agencies and developers get one line each
- odilelabs.com /pricing lists Odile Guard ($29 a month after 14 free days), from the live /guard page
- odilelabs.com X header text clears the avatar
- odilelabs.com Gate and homepage get their own link cards; X header names Gate and phone lines, not only After Hours
- odilelabs.com odilelabs.com: 24/7 contactPoint (hoursAvailable, (561) 375-2995) in the organization data on all 78 pages
- odilelabs.com Guide: how to stop an AI agent looping on your API (code fixes + Gate setup in three calls), linked from /gate, in the sitemap
- odilelabs.com llms.txt: Gate's live security features and the Bland/Vapi comparison
- odilelabs.com Owner Line pages: log a job's hours and costs by voice
- odilelabs.com Comparison page: Odile Labs vs Bland AI vs Vapi for an agent's phone line (prices from their own pricing pages, checked 20 Oct; no claims we could not check), linked from /gate, in the sitemap
- odilelabs.com Gate page: loop breaker (Free and Pro)
- odilelabs.com Implementers page and llms.txt: agency portal branding, Connect client payments and client health
- odilelabs.com Homepage: keep the challenge number on one line (non-breaking space and hyphen)
- odilelabs.com Demo page caption: latest benchmark (18 Oct, 10 of 10 in the caller's language) instead of 28 Sep
- odilelabs.com Menu: Stop scams (/guard) on all 112 static pages; sitemap gets the 5 live protection pages sync_check flagged
- odilelabs.com Homepage + findings lead with the 18 Oct language benchmark (both lines 10 of 10 in the caller's language; three rivals 1 of 15); the card still showed 27-28 Sep
- odilelabs.com Homepage scam section: inside the page width container (it sat flush left on phones)
- odilelabs.com Homepage: Stop scam calls section first (Guard $29, free scam checker, Try to scam Grandma 7777#) - the protection products were live and invisible from the front door
- odilelabs.com Guard visible: linked from all 18 library pages, every US scam guide, llms.txt and the sitemap (it was live with checkout and linked from nowhere)
Added
- odilelabs.com Free Scam Talk Kit: /scam-kit hub, fridge sheet, code-word cards, 10-slide talk + quiz, handout, Spanish sheet + handout; linked from guides, sitemap, llms.txt
Changed
- odilelabs.com Scam Library: 18 sourced scam pages at /scams/<slug> + /scams index, linked from the guides, sitemap and llms.txt; every source checked live (1 dead FTC link replaced, 1 redirect updated); 268/268
- odilelabs.com Link the free scam checker from all 6 scam guides, sitemap and llms.txt
- odilelabs.com Privacy: scam and robocall screening network (keyed-hash numbers, 31 days, no real calls), decoy lines, free scam/clone checks
- odilelabs.com Privacy page for the five iPhone mini apps (Tell the Chef, Stay Days, Tip Share, Plenty, Say It in English): no data collected
- odilelabs.com llms.txt: Odile Direct is also on RapidAPI Hub (lookups free, Basic 50 messages a month, Pro $10), with the listing URL
- odilelabs.com One, pricing, llms: Odile One yearly $2,990
- odilelabs.com Pricing, After Hours, llms: yearly plans, two months free ($1,990 After Hours, $290 Solo)
- odilelabs.com After Hours, HVAC, plumbers: emergencies can ring the owner's on-call phone (proven in a simulated gas-smell call 19 Oct)
- odilelabs.com Everything + llms: Dusklin automations from $2,000 and the five built-for-you prices
- odilelabs.com Agencies: overage now added to the next invoice automatically (was 'billed by hand')
- odilelabs.com Gate page: blocked-call alerts
- odilelabs.com Nav: Odile Direct and Odile Gate after Developers on every page
- odilelabs.com Retire /journal, drop money/customer counts from /findings
- odilelabs.com Homepage: a first line for business owners, 'Run a business? Hear your own receptionist answer' -> /try
Added
- odilelabs.com New page /resell: start an AI receptionist agency in the US and Canada (demo any business, first line free 30 days, $99/line wholesale, no earnings claims, TCPA/CAN-SPAM/CASL); linked from /agencies and /implementers
Changed
- odilelabs.com Odile Gate: new developer-tool page
- odilelabs.com /languages: top section for the public dare line
- odilelabs.com Pricing + Everything: Odile Direct entries (0 mentions found on /pricing, /everything, /implementers)
- odilelabs.com Homepage: Odile Direct link in the developer card of Three ways to use it
- odilelabs.com T1.3 payback math: one short block on all 19 After Hours trade pages
- odilelabs.com sitemap: /a2a and /direct/claim
- odilelabs.com Privacy: Odile Direct section (what a claimed listing stores, agent messages handled like call messages, manage link to edit/remove) before the Direct release
- odilelabs.com Odile Home privacy policy at /home/privacy (noindex): reads Apple Home device names/settings with permission, speech on device, one command's text + device list sent and not stored, IP only for the rate limit, confirm before unlock/open
- odilelabs.com Abroad app privacy policy at /abroad/privacy (noindex, not in the sitemap): collects nothing, checklists and dates stay on the phone, one public data download, independence notice, publisher address. Needed before the app is submitted
- odilelabs.com 32 languages everywhere on odilelabs.com: every 'seven languages' claim, language list and availableLanguage block (26 pages) now says 32; new page /languages (the 32 with native names, the exact first words in 5 languages, FAQ + Service JSON-LD, sitemap, llms.txt, linked from /afterhours and /pricing); changelog entry. 206/206
- odilelabs.com Redesign: light only, single light theme-color; homepage keeps Owner Line and the own-consultant claim
- odilelabs.com Redesign: developer-tool clean
- odilelabs.com Agency pages: make a demo for any prospect, under your name (partner portal /partners/demos)
Changed
- odilelabs.com Privacy: Plate is now an iPhone app (installation ID, free scans used, subscription end; photos discarded; log on the phone)
- odilelabs.com sitemap: <lastmod> from git for every page (51 stale after the two-plans restructure, 9 missing incl. /restaurants)
- odilelabs.com /restaurants: Odile Restaurant Starter $199, Ordering $399, Pro $599 (14-day trials), demo pizzeria talk button; on /pricing, /everything, sitemap, llms
- After Hours Shorts in 7 languages: the render agent's half of the dub pipeline
Changed
- odilelabs.com Footer: Instagram link (instagram.com/odilelabs, rel=me) on all 73 pages + Organization sameAs
Changed
- odilelabs.com llms: Automations = what we install on your systems (concrete installs, speed, you own it, no data kept after handover)
- odilelabs.com Affiliates earn 30% for as long as the business stays a customer (was 12 months)
- odilelabs.com v2 copy: Instagram posts need a photo (text it with 'post this'); spoken example posts to Facebook. v2 proven live 14 Oct
- odilelabs.com Footer/nav: 'For AI implementers' -> 'For agencies'; the /implementers page and llms.txt keep their audience wording
- odilelabs.com No AI talk to owners: titles, descriptions and selling copy on 38 pages
- odilelabs.com Owner Line page + homepage hero: one agent runs your business, day and night
Changed
- odilelabs.com Odile Bail page /bail-bonds: $299/mo, 14-day trial, what it asks, what it never does (FL 648.44), on /pricing (tier + JSON-LD offer), llms.txt and sitemap
- odilelabs.com Founding offer: first 10 shops get the done-for-you setup at no charge
- odilelabs.com /forwarding: Canada row (Rogers + Telus home-phone codes from their own support pages; mobile = standard codes, carrier support otherwise; Bell: ask Bell)
- odilelabs.com National /garage-door, /roofers, /electricians pages, built from the live Tampa pages; linked from /contractors and the city pages, sitemap, llms
- odilelabs.com /locksmiths national page: same claims as the live Tampa page, linked from /contractors and the city pages, sitemap, llms
Changed
- odilelabs.com /locations: AI receptionist for businesses with 5-50 locations
- odilelabs.com One FAQ: drop the Jobber claim until a real shop connects end to end
- odilelabs.com Forwarding: VoIP section (13 providers from their own help pages), Verizon 3-6 rings + Live Voicemail per Verizon, Mint/Visible/Fi; affiliates earn on Websites, SEO fix, Dusklin UK
- odilelabs.com Forwarding page: busy/phone-off codes, SIP line, FAQ + FAQPage JSON-LD; codes in llms.txt
- odilelabs.com Homepage structured data: Organization description leads with Odile One; Odile One Service + $299 offer added (AI engines read JSON-LD)
- odilelabs.com Icons redrawn in the site mark (grey ring, short blue arc) at every size + favicon.ico; the iPhone home-screen icon was a tiny ring in a white corner
- odilelabs.com Share card for /missed-calls and /demo re-rendered from its source: '$0 until your first booked job' (the PNG still said '14 days free')
- odilelabs.com Privacy: speech provider set not to train on calls since 12 Oct 2026; the answering model's terms bar training
- odilelabs.com Remove the comparison pages (/compare, /vs/gohighlevel, /vs/wakeman), their links, sitemap and llms lines; 301s to /pricing, /one, /afterhours
- odilelabs.com Comparison pages: /compare, /vs/gohighlevel, /vs/wakeman (their prices from their own pages, read 12 Oct 2026; what each does better); linked from /one, /pricing, /afterhours, sitemap, llms; /affiliates JSON-LD named the program
- odilelabs.com /start quiz page (Zeely-style one tap per step, ends on the visitor's own receptionist via POST /hear/start); linked from /one; sitemap
- odilelabs.com Affiliate program page /affiliates (30% for 12 months, rules, Get my link -> /signup/affiliate); linked from /one and /pricing; sitemap + llms
- odilelabs.com Odile One page links /signup/one
- odilelabs.com Odile One ads add-on also runs hiring ads (job ads to find technicians)
- odilelabs.com Odile One ($299, was After Hours Bundle) at /one + ads management add-on $199/mo; Odile One leads the nav on every page; /bundle, /bundles -> /one; pricing, JSON-LD, llms, sitemap
- odilelabs.com /bundles -> /bundle 301
- odilelabs.com /seo gets its own link preview
- odilelabs.com Websites and Faces get their own link previews
Changed
- odilelabs.com Faces Pack: first video free, plans $99/2, $199/4, $399/8 (/pay/faces-2, /pay/faces-4); site-info After Hours trial terms explicit (Solo 14 days, $199 free until first job)
- odilelabs.com Agencies: API row leaves 'not built yet'
- odilelabs.com Agencies: the self-serve partner portal is live (/partners/signup); not-built list fixed (one span per row) and honest about API reads + overage
- odilelabs.com Business Check for agencies ($49/mo, 100 branded reports, first 5 free): /agencies section + sample, /pricing card, llms, changelog
- odilelabs.com Website talk button on the $199 plan and up: pricing, After Hours, both llms files, changelog
- odilelabs.com Lead with two products: nav After Hours | Store Chat | Pricing on all 59 pages, 'Services' -> 'More services'; homepage 'Two things we do'; Store Chat second on /pricing; llms lead
- odilelabs.com Pricing/llms: developer lines are per minute (25c, 40 min $10 / 200 min $50); call packs only for lines set up before 11 Oct
Changed
- odilelabs.com AI-ready upgrade $149 once: /websites card, /pricing tier + Offer, llms.txt section
- odilelabs.com 12 trade x metro SEO pages: HVAC/plumbers/electricians/roofers/garage-door/locksmiths x Tampa/Orlando
Added
- odilelabs.com Line check form: optional trade + city so the result email can link a demo answering as the business; privacy page says so
- odilelabs.com New page /implementers: sell the missed-call fix, we build and run it (white-label terms as /agencies), footer link on every page, sitemap + llms lines
Changed
- odilelabs.com Agencies: five questions a careful buyer asks, answered from measured facts, no prices
Changed
- odilelabs.com AI answers: spell O-D-I-L-E + not-affiliated line (Odide Labs, Odly.ai) on about/pricing/llms, one Organization identity on all 31 pages, CRM + AI-booking FAQ, named monthly price summary
- odilelabs.com Privacy: Facebook/Instagram messages section for Meta App Review
- odilelabs.com Link the free /agent-check (can an AI assistant book you?) from /afterhours, llms.txt, llms-full.txt, sitemap
- odilelabs.com sitemap: /book/demo-hvac (linked from /afterhours)
- odilelabs.com Name the public booking page on /afterhours and in llms.txt / llms-full.txt (demo: /book/demo-hvac)
- odilelabs.com /bundle: After Hours Bundle $299 for every trade (signup links /signup/bundle?trade=<kind>); /pricing card; llms + llms-full; sitemap; links from /hvac /contractors /salons /afterhours
- odilelabs.com /plumbers: After Hours for Plumbers $299 bundle page; card on /pricing; llms.txt + llms-full; sitemap; links from /contractors and /hvac; robocalls the line recognises do not count toward the 400
Changed
- odilelabs.com After Hours iPhone app on the App Store: link on /afterhours and in llms.txt
Added
- odilelabs.com New page /listing-films: $79 per listing, first one free
- odilelabs.com New page /hvac: AI receptionist for HVAC companies
Changed
- odilelabs.com AI answers: /pricing named as people ask ('Odile Labs pricing plans'), llms.txt drops a blanket 'No subscription', Organization disambiguation adds Odide Labs (29 pages)
Fixed
- odilelabs.com Fix stale $199 trial claim on the home film's end card
- odilelabs.com Fix stale $199 trial claim in the afterhours/contractors films
Added
- After Hours New businesses get 4 CRM workflows on by default at signup
Changed
- odilelabs.com After Hours $199 plan: free until it books your first job (up to 30 days), replacing the 14-day trial
- odilelabs.com Visible FAQ + FAQPage JSON-LD on /afterhours and /pricing, Questions block in both llms files
- odilelabs.com findings: search/OG description no longer leads with 'zero paying customers' (stale since 4 Oct first sale)
- odilelabs.com Social Autopilot: Threads in the platform list (/social, llms)
- odilelabs.com Referral month on /pricing, /afterhours and both llms files
- After Hours Social Autopilot copy names Threads (signup, onboarding email)
- After Hours Referral: one free month for every referred business that pays
- After Hours Social Autopilot posts to Threads
Changed
- odilelabs.com /pricing: the trial button sits under the heading (279 px on a phone); it was below the fold (funnel audit, 4 Oct 2026)
- odilelabs.com llms.txt: the MCP server is in the official registry (com.odilelabs/odile) and its answering-line offer is readable without sign-in
- odilelabs.com Trial link on /calculator and /linecheck, with the same trial_start_click tap event as /demo (funnel audit, 4 Oct 2026)
- odilelabs.com Organization markup: the home page's disambiguatingDescription on all 26 other pages
- odilelabs.com Trial taps report through a real [data-cta] listener
- After Hours AI-caller rule: ask for the customer's details in the first answer, save without a read-back
- After Hours Language rule: every switch is made by calling language_detection
- After Hours Signup pre-ticks the six advertised languages, so a new line speaks all seven
- After Hours Caller's language note lives in messageRule, not a second copy in languageRule
- After Hours Owner messages are written in the owner's language, whatever language the caller spoke
- After Hours A customer who paid but has no number yet (capped day, failed purchase, or no receptionist built) is emailed once that it is on its way
- After Hours An email-only website enquiry becomes a to-do on the CRM's Tasks page (contacts are keyed by phone; claims audit, 4 Oct 2026)
- After Hours Signup failure paths tell the truth and keep the trial one click away; the start link lets a cancelled business start again
- After Hours Signup asks what kind of business (optional): the pick sets the trade's safety pack, whatever the name says
- After Hours Signup: the trial button leads the done page; an owner who skipped the card can start the trial from Home, Phone setup and Billing
- After Hours Customer page: Edit details opens after a save, on errors, and from ?edit=1 links
- After Hours CRM list on a laptop: tighter rows, Call button at the right edge, 36 px chips for a mouse
- After Hours CRM for owners on a phone: Call back / Text back, caller's need first, no marketing footer, bottom menu bar, 44 px targets, plain section names
- After Hours Partner link: own-key lookup for ?to= (constructor/__proto__ built a broken Location)
- After Hours [verified] Use call completion for CRM legacy delivery boundary
- After Hours [verified] Harden CRM contact identity and independent call delivery
- After Hours [verified] Fix HubSpot country-prefixed phone lookup
- After Hours [verified] Fix durable after-hours CRM call-note sync
Changed
- odilelabs.com Apply browser email syntax to the optional preview address
- odilelabs.com Validate optional website preview email before submission
- After Hours take_message: idempotent per call (dupKey), monotonic message timestamps
- After Hours take_message: acknowledge only {saved:true, ref}; owner_notice is acceptance, never receipt
- After Hours Bind the existing exact acceptance to one immutable task and pin reviewed bases
- After Hours Reject malformed preview email local parts and domain labels
- After Hours Reject invalid optional preview email before generation
Fixed
- After Hours fix: keep pending booking requests consistent with revised messages
- After Hours fix: preserve updated message details and incomplete retry responses
Changed
- odilelabs.com plans: every sign-up link says which plan it opens; the hero names both ($199, or $29 linked to /signup/solo)
- odilelabs.com llms: Formats is credit packs, not $9 a job; an agent can set up a per-call receptionist line through MCP
- After Hours booking requests: OFF by default (global switch + the owner's own opt-in), 90-day archive view, no deletion
- After Hours booking requests r4: keep the normalized Meet link bookSlot returns (linkFor)
- After Hours call-to-lead: real meeting links on video bookings; a durable owner queue for times the calendar could not give
- After Hours call-to-lead r5: a pending opt-out is saved only by a STOP that is in force and covers it, read back
- After Hours call-to-lead r4: retry a lost STOP before any call is texted; hold the number until it is saved; never outrank a START
- After Hours call-to-lead r3: reserve the caller number before the text (fail closed, atomic), keep a lost STOP visible, zone in both booking branches
- After Hours call-to-lead: STOP read before a missed-call text, one text per number per business a day, zone named in the caller's confirmation
- After Hours plans: sector sign-up links name their plan; each plan gets its own link; /signup and /signup/solo link each other
- After Hours signup: tie every visible label to its field (both forms); tel/email keyboards and autocomplete
Added
- After Hours Add bounded Odile FAQ support core and disabled WhatsApp adapter
Changed
- odilelabs.com [verified] Prevent CrewFill native GET fallback before initialization
- odilelabs.com Let crawlers read caller landing noindex
- odilelabs.com Reuse website preview box for separate consent-based support mode
- odilelabs.com Mount same-origin Odile support widget on published website
- odilelabs.com Websites vs SEO fix split by who owns the site: $99 includes on-page SEO; $399 fix is for a site you keep (or GBP+directories for $99 customers)
- odilelabs.com llms.txt: the free homepage preview on /websites (paste your site, say what you want)
- odilelabs.com Websites preview chat: ask for their website and what they want it to do (name+city still works without a site)
- odilelabs.com Hear it now -> (561) 375-2995 on /afterhours, /contractors, /missed-calls, /palm-beach
- odilelabs.com Websites preview chat: keep the input wide on phones (site.btn rule made Send full width)
- odilelabs.com Websites: 'See your new website in 30 seconds' chat box (name, city, optional email -> /site-preview)
- odilelabs.com After Hours: website form replies on /afterhours and llms*.txt
- odilelabs.com Remove Plate and The Commish: pages, links on /apps and /everything, ad creatives; 301 to /apps
- After Hours developers: drop the unconfirmed manual-pause promise from the call-pack copy
- After Hours developers: call-pack buyer steps in plain language, with the real at-zero and number behaviour
- After Hours Use SDK-compatible nullable support selection schema
- After Hours Classify support request failures without provider prose
- After Hours Constrain support model selection to native JSON schema output
- After Hours Expose safe support model failure reasons without private content
- After Hours Expose retained enquiry processing warnings in JSON acknowledgements
- After Hours Preserve earlier support cleanup alarms under ongoing traffic
- After Hours Keep caller self-service pages out of search
- After Hours Configure approved 100-attempt contextual support pilot for coordinated release
- After Hours Integrate consent-based contextual pilot through atomic global support queue
- After Hours Use strict bundled form lookup and describe reply delivery honestly
- After Hours Preserve retained form enquiries and defer bounded CRM synchronization
- After Hours Scope support to website widget and visible owner inbox; preserve paused state
- After Hours Preserve saved booking when confirmation state persistence fails
- After Hours Close unsafe preview fetch and make form and booking acknowledgements truthful
- After Hours Reject incomplete Dusklin fact checks and sanitize every gate input
- After Hours Recover contact indexes and pending CRM delivery after partial import saves
- After Hours Keep sales lead filters and list view consistent
- After Hours Inbound: keep hand-sent emails on the person record for good
- After Hours Demo and Dusklin lines: Sarah instead of Lily
- After Hours Greeting: AI disclosure before an owner's record question; expressive voice on v3/v4 lines
- After Hours Missed-call text: a call stuck at 'initiated' (never connected) goes after 5 minutes
- After Hours MCP consent: louder warning when the return host is not a known agent (DCR lets anyone name a client) - after an emailed report 1 Oct
- After Hours Website previews: seven identical days read as one hours line (Every day: Open 24 hours)
- After Hours Website previews: a visitor names their business and gets their own homepage in seconds (/site-preview)
- After Hours Instant quote: a price question on a website form gets the owner's approved range in the reply
- After Hours Website form replies: every enquiry answered by email in seconds, in the CRM, owner told
Fixed
- odilelabs.com Fix website preview skip, business parsing and retry state
- odilelabs.com fix(seo): preserve existing public training crawler policy
- odilelabs.com fix(seo): permanently redirect extensionless index aliases
- odilelabs.com fix(seo): correct service identities and public search metadata
- After Hours repair validation: show both hashes, refuse empty expiry, keep expired approvals honest (PR29 review)
- After Hours Fix: add aria-labels to hours inputs for a11y (solo page)
Changed
- odilelabs.com Take /local-services-ads down; 301 to /afterhours; sitemap, llms, /contractors link removed
- odilelabs.com Social page: say owners pick channels and can set a caption per channel
- odilelabs.com Sitemap + llms.txt: /hubspot setup guide
- After Hours In seconds, part 2: demo/automation requests get their first reply at submit; engine calls get the hang-up text and owner alert at call end
- After Hours Customers (follow-ups, thank-yous, CRM push) and inbound emails run every minute, not hourly / every 15 min
- After Hours Customer receptionists: hang up on recorded sales pitches, pass automated notices to the owner (RECORDED_PITCH_RULE)
- After Hours Owner alert: an answered call that booked an appointment says so, not 'no message left'
- After Hours Social: a post that failed because its channel was disconnected says so
Products: After Hours · Meeting notes · Automations · Dusklin.