Vendors / QSR & drive-thru

Presto Automation

Drive-thru voice AI ("Presto Voice") for QSR chains, and as of the December 2024 asset sale that is the entire product. Founded 2008 as E la Carte, Inc.; its pay-at-table tablet (Presto Touch, 277,000+ units shipped to Applebee's, Chili's and Red Lobster) and its computer vision line were abandoned in FY2024 and not retained by the buyer. Presto settled an SEC cease-and-desist order (33-11352, 2025-01-14) over misrepresenting Presto Voice as eliminating the need for human order taking; off-site "human in the loop" agents processed the majority of orders.

scored live legacy rubric

Claims in scope
296
Scored
44
Assessed
24
Unknown
272
Not applicable
18
Values challenged
25
92% of in-scope claims are unknown. This record measures what Presto Automation publishes at least as much as what it does. A vendor that documents little scores low here whether or not the capability exists. Absence of evidence is recorded as unknown, never as no.

Identity

Owner
Presto Phoenix, Inc. — private since 2024-12-03, when a consortium led by Remus Capital with Link Ventures and Metropolitan Partners Group bought the assets of Presto Automation Inc. at an Article 9 auction. The predecessor listed on Nasdaq as PRST via a September 2022 SPAC merger with Ventoux CCM Acquisition Corp, was delisted 2024-09-06 (Form 25-NSE) and deregistered 2024-09-19 (Form 15-12G). SEC CIK 0001822145; filings verified 2026-09-06
Parent
investor consortium led by Remus Capital (2024-12-03)
Who it is for
Drive-thru QSR brands buying voice AI order taking; named customers include Carl's Jr., Hardee's, Del Taco and Checkers, with Fazoli's, Taco John's, Wienerschnitzel, Yoshinoya and Captain D's named on the marketing site and a Dairy Queen partnership announced April 2026
Site
https://presto.com/

Pricing

transparency: quote-only · unit: unknown (not published) · processor lock-in: unknown

Software
No pricing published on any of the 193 URLs presto.com serves today. A 2021 archived page marketed a three-tier POS subscription at $29.99/$74.99/$134.99 per month, but that page is withdrawn, is uncorroborated anywhere else in the corpus, and describes a product line the company's own SEC filings for the same period do not report revenue from.

Capabilities

Every claim is binary and checkable. Grades: A primary documentation · B product documentation · C pricing or feature page · D marketing claim · E third-party reporting · F inference with no source. A yes on a differentiator claim requires A or B.

Order capture & FOH workflow

Unknown

Provides a graphical floor-plan editor where an operator can draw sections, place tables of varying shape/capacity, save multiple floor-plan layouts per location, and assign sections to servers.

order-capture-floor-plan-editor

Not scored by this record.

Partial

Supports splitting a check by item, by seat, by even N-way, and by arbitrary dollar/percentage amount, and merging checks or tables back together, including after partial payment.

order-capture-split-merge

Scoped to Presto Touch, the pay-at-table tablet, as described in Item 1 of the FY2023 10-K (fiscal year ended 2023-06-30) - not to the product sold today. The 10-K states at grade A that Presto Touch offers the ability to split checks. The archived E la Carte help-centre article 'How do I split the payment for a bill?' (authored 2014-08-13, Wayback 2015-12-23, grade B) documents exactly two guest-driven modes - Evenly, where the guest selects the number of ways, and By Specific Items - so even N-way and by-item splitting are published. NOT established anywhere in the 323-document corpus: splitting by seat, splitting by an arbitrary dollar or percentage amount, merging checks, merging tables, or merging after a partial payment. The only place those appear is as bare rows in the feature matrix of the withdrawn 2021 presto.com/pos page, and that matrix carries no weight (see below). The same help-centre article in fact instructs that the server must NOT pre-split the check on the POS or the tablet misreads it, which confirms the check of record lived in a third-party POS, not in Presto. Scope and survival: the FY2024 Q3 10-Q records the Presto Touch wind-down and abandonment, and the January 2025 asset-sale release says Presto Phoenix, Inc. retained only the Presto Voice platform - today's drive-thru voice product has no check-splitting surface at all. Context on the withdrawn POS page: 'Presto POS' occurs in only 2 of the 323 corpus documents; its feature matrix is headed 'Feature Comparison Matrix Basic placeholder' with empty plan columns and rows including 'Nest thermostat' and 'Pizza portioning'; and the vendor's own S-4/A registration statement filed August 2022, whose business section covers exactly the period that page was live, says 'We offer a range of Touch, Vision and Voice products.' and lists 'POS products' among verticals Presto might acquire. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

A
Unknown

Ships a first-party handheld ordering app running natively on the handheld device (not a remote/mirrored desktop session) that can send to kitchen and take a card payment tableside.

order-capture-native-handheld

Not scored by this record.

Unknown

With the internet down, terminals and handhelds can still create orders, apply modifiers, send to kitchen, and tender cash, and the vendor publishes what does and does not work offline.

order-capture-offline-order-entry

Nothing published settles whether a Presto terminal could create orders, apply modifiers, send to kitchen and tender cash with the internet down. The only affirmative offline claim in the 323-document corpus is on the withdrawn presto.com/pos page (Wayback 2021-04-20): 'Offline functionality. No internet, no Wi-Fi, no problem.' and 'Never-Down Network / A system that doesn't stop working, even when Wi-Fi shuts off.', plus an 'Offline transactions' row in its feature matrix. That page cannot carry this cell. It is uncorroborated - 'Presto POS' occurs in exactly 2 of the 323 documents (this page and /pos-integrations); its matrix is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, it misspells 'Puchase orders' and 'Preto Loyalty', and its rows include 'Nest cameras', 'Nest thermostat' and 'Wi-Fi hotspot guest data collection'; its own page footer describes the company as 'Our enterprise-grade touch, vision, and voice technologies', which does not include a POS; and the vendor's SEC filings covering the same period describe no POS product (S-4/A filed August 2022: 'We offer a range of Touch, Vision and Voice products.', with 'POS products' listed among acquisition-target verticals, and revenue for FY2021 and FY2020 recognised from the Touch and Voice products only). The one genuinely corroborated offline mechanism Presto published - 'store & forward', on the archived pay-at-table and restaurant-tablet pages - is explicitly PAYMENT ONLY ('allowing guests to pay even if the restaurant loses internet connectivity') and says nothing about order entry. Tokenised over all 323 documents: 'offline' 5 docs / 8 hits. The uncited rationale this replaces ('Cloud voice AI; requires connectivity') is also not supportable as a `no` - it is an inference about today's Presto Voice, not a published statement about a terminal. Bound: the presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired presto.com pages, 32 archived E la Carte help-centre articles, 8 SEC filings - a census of the vendor's marketing and filing surface, not of its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application that this pass did not read. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: The portal has no order-entry surface to degrade; the only 'offline' hits in its 152 app files are 5 Create-React-App service-worker boilerplate comments ('Content is cached for offline use.'), which is template text and not a product behaviour. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Tokenised controls over the 362 first-party sources: 'offline' 0, 'store and forward' 0, 'cash' 0 (word-boundary), 'tender' 0, 'printer' 0, 'kds' 0 (word-boundary), 'kitchen' 0, 'refund' 0. WHAT IT SHOWS ABOUT THE POS: the terminal does not own a POS - it submits into the restaurant's. Verbatim comments: 'Indicate whether a check created on POS or not by checking the check event'; 'no check is ever created on the POS within the session'; '7008 means the POS already holds the FINAL order for this car and will reject every further order event in the session' (7002 = 'Send Order is Pending', retryable); 'a check event reached the session after one or more masked 7002s, i.e. the POS pipeline recovered'; 'Call menu unification API to get POS-specific item data'; and the agent screen's right pane is literally 'Agent Cart / POS Cart'. So the current product's own terminal code contains no order-entry-while-disconnected path and no cash tendering at all; what it does contain is retry/reconnect machinery for the link to the POS ('retry' 217, 'reconnect' 83, 'websocket' 212). Held unknown rather than `no` per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence - and because this app is the remote HITL agent terminal, not an in-store device. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. offline 6/152 and all six are PWA plumbing (serviceWorker.ts x4, index.tsx, Auth0 auth0.ts) - POISON, not an offline order path. A NEW HOST WAS FOUND AND REJECTED, and the owner should know it exists: https://pos.presto.com serves a live 200 Angular/Ionic POS app (7,771-byte index, main.a78f1ddf8e0bbf50.js 6.7 MB). It is NOT Presto Automation's product - its CSS variables are all --linga-*, its bundle strings name lingaRos/lingaROs logos and it calls https://web.lingapos.com, https://myproduction.lingaros..., staging-payment.lingapos.com and download-linga-app.s3.us-west-2.amazonaws.com/linga_plugins/production/. It is a white-labelled Linga rOS (Benseron) build parked on a presto.com subdomain, i.e. ANOTHER ATLAS VENDOR'S product, and per merge policy (white-label partner code, and not a census of this vendor) nothing in it may be scored to presto-automation. Retrieved 2026-09-18. || 328th: NEW (the 326th's note on this cell bounded the Restaurant Portal's route list; this is the Voice Terminal's own persistence layer, read for the first time): the production dt.presto.com source map contains a single 'IndexedDB' occurrence, and it is an explicit statement that durable local queueing is NOT implemented - "a page RELOAD before this runs still loses queued sends. Surviving that needs IndexedDB and is explicitly deferred; revisit if telemetry shows real loss." 'outbox' 0 and 'store and forward' 0 across all seven corpora (~12.6 MB). The terminal's localStorage keys are a closed set - AUTH_TOKEN_KEY, USER_STATE_KEY, USER_STATE_VERSION_KEY and a UI panel-split key - with no cart or order among them, so a cart in flight does not survive a reload, let alone a WAN loss. VERDICT: unknown (held, not `no`: order capture here is a live voice session written into the partner POS, so a Presto terminal has no local tender or cash-drawer path for the claim to apply to). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Tokenised word-boundary controls over the S-4/A + 2024-05 10-Q + FY2023 10-K: 'offline' = 1 in the 10-K and 2 in the S-4/A, all DDoS/outage risk-factor prose ('a technique used by hackers to take an internet service offline'; 'may require us to take the affected customer offline to restore service'); 'store and forward' 0. The S-4/A's only connectivity statement about a terminal is the divested Touch line's Presto Flex tablet: 'The device offers Wi-Fi and LTE connectivity' (a second link, not an offline mode). NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Offers a first-party self-order kiosk that renders the same menu and modifier tree as the POS with no separate menu build, and the vendor documents ADA/accessibility conformance for it. differentiator

order-capture-kiosk-first-party

Not scored by this record.

Unknown

Supports drive-thru-specific order flow: order-point/pay-window/pickup-window separation, order sequencing or tandem-lane assignment, and pull-forward or parking-spot assignment.

order-capture-drive-thru

Not scored by this record.

Unknown

Captures and reports drive-thru speed-of-service timers by segment (order, total, window) tied to individual orders.

order-capture-drive-thru-timers

Not scored by this record.

Unknown

Vendor ships a first-party AI voice ordering agent for phone and/or drive-thru that injects orders directly as POS orders, or publishes a documented API partner program for third-party voice AI. differentiator

order-capture-voice-ai

Not scored by this record.

Unknown

Supports order throttling: per-channel capacity limits per time slot with automatic quote-time extension when kitchen load exceeds a configured threshold. differentiator

order-capture-throttling

Not scored by this record.

Unknown

Accepts future-dated/scheduled orders with a per-channel lead time and automatically injects them into the make queue at a computed fire time rather than on receipt.

order-capture-scheduled-orders

Examined 2026-08-04. Nothing Presto publishes mentions future-dated or scheduled orders, lead times or fire-time logic: the page sitemap lists nine marketing/legal pages (walked in full), the rest of the site is a 184-post blog/press archive (post-sitemap.xml, all marketing and press-release slugs), the voice-ai page describes only live drive-thru order capture written into the partner POS (Oracle, PAR, Qu), and the phone-ordering post ('Answering the Call', read 2026-08-04) covers menu navigation, customization, payment and call-forwarding without mentioning scheduling, order-ahead or pickup times. No help centre or admin guide exists to consult (docs./help./support./api./developer./kb.presto.com re-probed 2026-08-04 — NXDOMAIN or TLS failure on all). Drive-thru capture is immediate by nature, but whether the phone-ordering agent can take a future-dated order and hold it to a fire time is stated nowhere the vendor publishes, so this stays unresolved rather than absent. || 323rd: 323rd, CORRECTION + NEW CONTROLS. CORRECTION to the 2026-08-04 line "No help centre or admin guide exists to consult": support.elacarte.com is a live Zendesk "Presto Support Center" (curl with browser UA + Accept/Accept-Language = 200, 16,094 bytes; node fetch alone sees a Cloudflare 403, a FALSE refusal). It publishes nothing: articles.json/categories.json/sections.json all return count 0 anonymously and /hc/sitemap.xml has 0 URLs, so the help-centre absence is now a measured zero rather than an unprobed host. NEW CONTROLS over Presto's own current drive-thru console source map (https://dt.presto.com/static/js/main.d5e0747c.js.map, 345 first-party code files; the file set is byte-for-byte the same 347 sources as the previous main.327f7955 build, so the console has not gained features since the 281st): tokenised, word-boundary, case-insensitive -- "pre-order" 0, preorder 0, "lead time" 0, kiosk 0, scheduled 2 docs 2 hits and BOTH POISON (a setTimeout comment in hooks/issueReport/useIssueFlagWindow.hooks.ts and one in utils/asrcAudio.ts), "fire time" 1 hit POISON (an OrderReview comment about reading state at the moment the order is finalised, not a promise time). The console is a live-lane order taker with no future-dated order concept; that is a bound on THIS app only, and the phone-ordering agent and partner POS write path remain outside any corpus we hold, so the cell stays unknown. Retrieved 2026-09-17. || 324th: NEW: No scheduled/future-order object exists in the production GraphQL schema; the only time objects are TimePeriod / MealPeriods / OperationHours / TTSOperationHours, which schedule MENU availability and text-to-speech greetings, not orders. 'scheduled order' = 0 over the 192 site pages. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: 'scheduled order' 0, 'future order' 0, 'lead time' 0, 'pickup time' 0 across the 362 first-party sources of the production Presto Voice Terminal (the 20 'schedul' hits are setTimeout/flush scheduling in the logger and audio code). SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. A drive-thru voice session is by construction immediate-fulfilment; held unknown, not `no`, per the lacks-entirely rule. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. "scheduled order" 0, "future order" 0, "lead time" 0, "pickup time" 0 over the 152 first-party files. What the portal does model is OPERATING HOURS - RestaurantSetting/OperationHours.tsx and a separate TTSOperationHours.tsx, plus menu meal periods / time periods (the routes and files pages/menu-editor/time-period/MealPeriods.tsx, NewTimePeriod.tsx and components/menu/TTSTimePeriod.tsx) - i.e. when the agent may take an order and which menu applies, never a future fulfilment time. Held unknown (immediate-fulfilment product). Retrieved 2026-09-18. || 327th: NEW SURFACE + AN ADJACENCY TRAP. The Presto Voice Terminal's complete generated GraphQL schema (generated-interfaces/graphql.ts, extracted from the real 4.3 MB source map described on guest-loyalty-unified-profile) carries a CLOSED RestaurantSettings type - the entire per-restaurant settings object, 22 fields: autoGratuityDisclaimerText, autoGratuityInPercentage, currency, defaultTipPercentages, deliveryModalityTaxRate, dineInModalityTaxRate, disablePortalMenu, id, isAlertingEnabled, isAvailableForOrdering, isPayOnlyEnabled, isTabEnabled, isTaxEnabled, isTipEnabled, skipAdvancedPayments, smsVerificationText, tabSize, toGoDefaultSMSText, toGoModalityTaxRate, toGoOrderConfirmationMessage, toGoPickupMinutes. THE TRAP: `toGoPickupMinutes` looks like a scheduled-order lead time and is not - it is a single fixed to-go preparation estimate with no date, no time slot, no per-channel variation and no capacity model, i.e. an adjacent feature, which by merge policy cannot even carry a partial. Tokenised controls over the 142 first-party sources (427,540 B): 'schedul\w*' = 0, 'future order|pickup time|lead time' = 0, 'queue\w*' = 0. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'pre-order' 0, 'order ahead' 0, 'future order' 0; the 187 'schedul*' hits in the S-4/A are financial-statement 'Schedule' / payment-schedule prose (POISON: never a scheduled order). NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Provides a distinct catering order flow with quotes, deposits, balance-due tracking, and a delivery/event schedule separate from the standard order queue.

order-capture-catering

Not scored by this record.

Unknown

Pushes an order-ready signal back to third-party marketplaces (e.g. DoorDash) from POS or KDS state, rather than requiring a tablet tap. differentiator

order-capture-order-ready-signal

Not scored by this record.

Unknown

Voids, comps, and discounts require a reason code and can be gated behind role-based manager approval, with all instances recorded in an exception report.

order-capture-void-comp-controls

Not scored by this record.

Menu, modifiers & pricing engine

Partial

Supports modifier groups nested at least three levels deep, each level with independent min/max selection counts and a forced-selection (required) flag.

menu-pricing-nested-modifiers

Source code of Presto's live first-party operator console (dt.presto.com, page <title> 'Presto Voice Terminal' -- that string is in the HTML shell, not the bundle; robots 'User-agent: * / Disallow:'; public unauthenticated bundle main.327f7955.js, 3,401,962 bytes, retrieved 2026-09-13; the 223rd's c4405f0e bundle has been superseded). The menu API's GraphQL `modifierGroupsQuery` returns, per modifier group, `id name description minimumSelections maximumSelections defaultSelectedItemIds menuItems sortOrder`. Nesting is recursive in code: the order payload builder `hl` emits `{item, quantity, constraints: Vp(e,t,o), added_by}`, `Vp` maps each of an item's `childModifierGroups` through `kp`, and `kp` maps each of the group's `selectedItems` back through `hl` -- so an option inside a modifier group carries its own modifier groups to any depth, not a fixed two levels. The cart renders `cartitem-child-modgroup` rows keyed by '__'-joined `pathToItem` paths and prints '! <group name>' in red (#BE3019) when the group's selected items number fewer than its `minimumSelections`; the keyboard help lists 'Enter nested modifier group' (Shift+D) and 'Back to parent group' (Shift+A). SHORTFALLS: (1) there is no separate forced-selection/required flag -- the code derives 'required' as `minimumSelections>0` (e.g. the autofill log "[AUTOFILL] Required group '...' has no options"), and no `isRequired`/`forced`/`mandatory` field exists outside third-party library code; (2) the code shows unbounded recursion but no menu in the bundle demonstrates three levels; (3) this is the voice order-taking console consuming a versioned menu (`getMenuVersionsFromMenuAPI`, 'Get Menu Items From Restaurant Portal Failed', 'menu unification API', 'Order Rejected by POS') whose items reach the restaurant's POS -- the per-group `min`/`max` arrive in Presto's own `brandMenuConstraints` layer (alongside Presto-only `prompt`, `upsell_items`, `conditions` fields), but the bundle does not show where that nested menu is authored or whether its depth is Presto's or the POS's. Date caveat: a live 2026-09-13 bundle; minified code, not documentation. Presto Voice is the only product this record scores present-tense. https://dt.presto.com/static/js/main.327f7955.js · retrieved 2026-09-13 adversarially verified

A
Partial

A single modifier can carry different prices depending on the parent item and the selected size, configured as a matrix rather than by duplicating the modifier.

menu-pricing-modifier-price-by-parent-size

CLAIM: one modifier carries different prices by parent item and selected size, as a matrix, without duplicating the modifier. VERDICT: partial/A (a context price without duplicating the modifier record exists; no size axis and no matrix). EVIDENCE: Presto Restaurant Portal source map (portal.voice.presto.com main.dbeab083.chunk.js.map, still served 200 on 2026-09-16; robots User-agent: * / Disallow: empty), generated-interfaces/graphql.ts: "export enum SecondaryType { ModifierGroup = "MODIFIER_GROUP", Category = "CATEGORY" }" on MenuOverride { overrideType (MENU_ITEM | MODIFIER); objectPrimaryKey; secondaryType; secondaryId; overrideKey (PRICE | TAX | POS_ID | SCREEN_NUMBER | CELL_NUMBER); modalityType; overrideValue }; components/menu/DragItemList.tsx: "Enter price override for this modifier group here" and "Enter price override for this category here". The same enums are served by anonymous GraphQL introspection on api.portal.staging.presto.com/graphql (200, 84,817 bytes; production api.portal.voice.presto.com refuses introspection, 400). The live operator console consumes the rows: dt.presto.com main.d5e0747c.js.map (current build, fetched 2026-09-16) utils/menu.ts getMenuItemPrice: "secondaryTypeOverride.find((o) => o.overrideKey === OverrideKey.Price) || modalityTypeOverride.find((o) => o.overrideKey === OverrideKey.Price)" falling back to "menuItem.price". So one modifier item is priced differently inside each parent modifier group or category. SHORTFALLS: (1) no size dimension: MenuItem has no size field and sizes are modifier groups (dt utils/menuUnification.constants.ts "MOD_SIZES_GROUP_ID = '_size'"), so a per-size topping price needs one modifier group per size, i.e. group duplication; (2) no parent-item x size grid anywhere in the schema; (3) on the newer unified brand menu dt utils/menuUnification.utils.ts sets "price: -1, //Hardcode as brand menu does not have price", so for those customers pricing lives in the partner POS. Retrieved 2026-09-16. https://portal.voice.presto.com/static/js/main.dbeab083.chunk.js.map · retrieved 2026-09-16 adversarially verified

A
Partial

Supports modifier quantity tiers (light / regular / extra / double) with a configurable price multiplier per tier, distinct from adding the modifier twice.

menu-pricing-topping-quantity-tiers

CLAIM: modifier quantity tiers (light/regular/extra/double) with a configurable price multiplier per tier, distinct from adding the modifier twice. VERDICT: partial/A (tiers exist as a qualifier on one selection; no per-tier price multiplier). EVIDENCE: Presto Voice Terminal source map, dt.presto.com/static/js/main.d5e0747c.js.map (10,796,537 bytes, the build named by the current asset-manifest.json, anonymous, robots Disallow empty), utils/menuUnification.constants.ts UNIFIED_MENU_CODE_NAME_MAPPING: "'1': { code: '~', name: 'light' }", "'2': { code: '-', name: 'remove' }", "'3': { code: '++', name: 'extra' }", "'4': { code: '>>', name: 'onside' }", "'5': { code: '+', name: 'add' }", "'6': { code: '=', name: 'only' }", "'7': { code: '_', name: 'sub' }"; utils/mappings.ts READ_REP_MAP "NO: 'No'", "LITE: 'Lite'", "EASY: 'Easy'", "EXTRA: 'Extra'"; reducers/menuSlice.ts sets "modCode" on a single selection from "mod.pos_specific_properties?.modcode" (a qualifier on the one modifier line, not a second line) and utils/cart.ts writes it as "modcode: mappedModCode". SHORTFALLS: no per-tier price or multiplier: utils/menu.ts getMenuItemPrice ends "return price * (quantity || 1);" with no modCode input; first-party controls over the 362 non-node_modules sources, tokenised word-boundary case-insensitive: "multiplier" 0, "portion" 0; POISON: "double" hits are all comments (double-click, double-count, double submission) and "light" hits are colours ("light red", "Light green background") except the mod-code table. The unified brand menu carries no price ("price: -1, //Hardcode as brand menu does not have price"), so tier pricing, if any, belongs to the partner POS (staging GraphQL POSType enum "BRINK|XPIENT"). Retrieved 2026-09-16. https://dt.presto.com/static/js/main.d5e0747c.js.map · retrieved 2026-09-16 adversarially verified

A
Unknown

Item base price can be defined as a grid across two variant axes (e.g. size x crust/preparation) with a per-cell price override. differentiator

menu-pricing-size-style-matrix

Not scored by this record.

Unknown

Items can define an included-modifier allowance (e.g. three toppings included) that automatically charges only for overage and credits or forbids substitutions per configuration. differentiator

menu-pricing-included-allowance

Not scored by this record.

Unknown

Supports combo/meal construction where components can be swapped with a price delta, and the system can automatically detect and convert eligible a-la-carte items in the cart into the combo price.

menu-pricing-combos

Not scored by this record.

Unknown

Upsell/suggestive-sell prompts can be configured per item and per channel (POS, kiosk, online), and the vendor reports attach-rate on those prompts. differentiator

menu-pricing-upsell-prompts

Not scored by this record.

Unknown

A single 86 action propagates automatically to POS, KDS, the vendor's own online ordering, kiosk, and connected third-party marketplaces, with a documented propagation latency.

menu-pricing-86-propagation

Not scored by this record.

Unknown

Supports per-item countdown/par counts that decrement on sale and automatically 86 the item at zero, with a scheduled auto-restore. differentiator

menu-pricing-countdown-auto-86

Not scored by this record.

Unknown

Menus, individual items, and prices can be scheduled to activate and deactivate automatically by day and time in the location's own timezone.

menu-pricing-dayparting

Not scored by this record.

Unknown

Supports distinct price books per channel (dine-in, pickup, delivery, kiosk, each third-party marketplace) including percentage-markup rules applied to a base price rather than manual per-item entry.

menu-pricing-channel-price-books

Not scored by this record.

Unknown

Supports dual pricing / cash-discount at the item level with the card price displayed as the base price, applied consistently across POS, kiosk, and online ordering, and printed on the receipt. differentiator

menu-pricing-dual-pricing

Not scored by this record.

Unknown

Menu changes can be staged as an effective-dated version, previewed before publish, and rolled back to a prior version after publish. differentiator

menu-pricing-versioning-effective-dates

Not scored by this record.

Unknown

Supports a central corporate menu template pushed to locations with field-level governance controlling which attributes a location may override. differentiator

menu-pricing-franchise-hierarchy

Not scored by this record.

Unknown

Stores allergen flags and nutrition values per item and publishes them to online ordering and third-party menus, and can derive nutrition from linked recipe components rather than manual entry.

menu-pricing-allergen-nutrition

Not scored by this record.

Unknown

Menu items and modifiers can be linked to recipes/bills of materials so that a sale depletes theoretical inventory and yields item-level theoretical food cost. differentiator

menu-pricing-recipe-linkage

Not scored by this record.

Unknown

Pushes menus to third-party marketplaces through a certified direct integration (not scraping or a menu-management middleman) and surfaces per-item sync status and rejection errors to the operator.

menu-pricing-3p-menu-push

Not scored by this record.

Unknown

Supports rule-based dynamic pricing where item price varies automatically by time, demand, or channel, with configurable floor/ceiling guardrails.

menu-pricing-dynamic-pricing

Not scored by this record.

Payments & money movement

Unknown

The POS operates with third-party payment processors of the merchant's choosing (documented list of supported processors/gateways) rather than requiring the vendor's in-house processing. differentiator

payments-processor-choice

Not scored by this record.

Unknown

Vendor publishes card-processing pricing publicly (a specific flat rate or interchange-plus markup) rather than quote-only. differentiator

payments-published-rates

Not scored by this record.

Unknown

Native dual-pricing / cash-discount mode stores two prices per item and prints both cash and card totals on the guest check and receipt. differentiator

payments-dual-pricing

Not scored by this record.

Unknown

Surcharging engine automatically excludes debit and prepaid cards via BIN/product-code detection, enforces the network percentage cap, and can be enabled or disabled per location. differentiator

payments-surcharge-guardrails

Not scored by this record.

Partial

All first-party payment terminals accept EMV chip and NFC contactless including Apple Pay and Google Pay.

payments-emv-nfc

The uncited `no` is wrong on the vendor's own signed record. FY2023 10-K Item 1 (fiscal year ended 2023-06-30, grade A) states that Presto Touch 'hosts a wide range of payment options and is PCI-DSS compliant' and offers the latest EMV and mobile payment technologies. The archived pay-at-table product page (Wayback 2020-04-22, grade C, dropped from the live site) enumerates the same tablet's payment surface in the vendor's own words: Chip & Signature, Chip & PIN ('Most secure implementation of EMV cards available today'), PIN-Debit, 'Mobile Pay - NFC-based contactless payment systems such as Apple Pay and Samsung Pay', QR Code, and encrypted magnetic stripe allowing P2PE; the 2019 restaurant-tablet page repeats 'NFC Payments NFC capability for contactless payment systems such as Apple Pay and Samsung Pay'. So EMV chip and NFC contactless including Apple Pay are published on a product the filings name. `partial` and not `yes` for three reasons: (1) Google Pay is named on no vendor terminal specification anywhere in the 323-document corpus - the vendor's own list stops at Apple Pay and Samsung Pay; (2) the claim covers ALL first-party payment terminals, and the only other terminal Presto ever marketed, the 2021 Presto POS register, is described merely as 'EMV-ready and PCI compliant payment processing' with no NFC or wallet statement, on a page that is uncorroborated and whose feature matrix is self-labelled a placeholder; (3) scope - this is Presto Touch, FY2019-FY2023. The FY2024 Q3 10-Q records the Touch wind-down and abandonment, and the January 2025 asset-sale release leaves Presto Phoenix, Inc. with the Presto Voice platform alone, which ships no first-party payment terminal at all, so no present-tense reading of this cell is available. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

A
Unknown

Accepts contactless payments directly on a phone (Tap to Pay on iPhone and/or Android tap-to-pay) with no separate card reader. differentiator

payments-softpos-tap-to-pay

Not scored by this record.

Unknown

Guest can scan a QR code on the printed check or table tent to view and pay the check from their own phone, with the payment closing the check in the POS automatically. differentiator

payments-qr-guest-pay

Not scored by this record.

Unknown

Configurable tip pooling and distribution rules (by hours worked, sales, role percentage, or points) that produce a per-employee tip allocation exportable to payroll. differentiator

payments-tip-pooling

Not scored by this record.

Unknown

Card payments can be captured while the internet is down via store-and-forward, with configurable per-transaction and cumulative offline limits. differentiator

payments-offline-store-and-forward

Not scored by this record.

Unknown

Vendor publicly documents who bears the loss when a stored offline transaction declines on reconnect, and surfaces a post-reconnect report of failed offline payments. differentiator

payments-offline-decline-liability

Not scored by this record.

No

First-party gift cards with real-time balance tracking, redeemable across every location in the group and through the online-ordering channel.

payments-gift-cards

The `no` rests on an affirmative published attribution, not on silence. On the one occasion Presto marketed gift cards at all - the 2021 Presto POS line - its own integrations page assigned stored value to THIRD PARTIES: Factor 4, described in this quote, and Givex ('gift cards, loyalty programs, and analytics'), both listed under 'Customer Loyalty' as integration partners. So first-partyness was contradicted by the vendor on its own page in the same period in which the sibling /pos page carried 'Gift cards', 'Enterprise gift cards' and 'Multi-store gift cards' as bare feature-matrix labels; and no document in the corpus has ever described real-time balance tracking, group-wide redemption or redemption through an online-ordering channel. The product sold today issues no stored-value instrument: Presto Phoenix, Inc. acquired the assets at the 2024-12-03 Article 9 auction and its own press release says 'Presto offers its AI solution, Presto Voice, to quick-service restaurants (QSR)', the live site serves exactly one product page (/voice-ai) among its ten pages, and the site tagline is 'Drive-thru voice AI automation leader.' Tokenised over all 323 documents: 'gift' 6 docs / 14 hits, of which exactly one is a live presto.com post and none is a gift-card program page; 'stored value' 1 doc, this one. Bound: the presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06 from sitemap_index.xml and an independent 20-page href fixpoint that surfaced one novel content path, a duplicate slug of a post already held), 90 archived retired presto.com pages, 32 archived E la Carte help-centre articles and 8 SEC filings. That bound covers the vendor's marketing and filing surface, NOT its product surface: dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application which this pass did not read and which is known to handle loyalty codes; nothing in it is evidence of stored value, but the reader should know the bound stops short of it. Also note the withdrawn presto.com/pos page is uncorroborated ('Presto POS' occurs in 2 of 323 documents, its matrix is headed 'Feature Comparison Matrix Basic placeholder') and the SEC filings covering that period describe no POS product. https://web.archive.org/web/20210622112856id_/https://presto.com/pos-integrations · retrieved 2026-09-06 adversarially verified

C
Unknown

House/on-account tabs with per-account credit limits, running balance, and periodic statement or invoice generation.

payments-house-accounts

Not scored by this record.

Unknown

A single check can be settled with multiple tenders and split by seat, by item, by even shares, or by arbitrary amount, with no hard cap below eight ways.

payments-split-tender

Not scored by this record.

No

Voids, refunds, discounts, and no-sales require role-based authorization (manager PIN or approval) and write to an immutable audit log identifying the approver.

payments-refund-void-controls

The `no` rests on the vendor's own operator documentation, not on a zero count. The only refund procedure Presto ever published - 'How to process a refund on PayPal', Presto Support Center, 2021-02-22, grade B, for the Presto Contactless Dining line - instructs the operator to log in to PayPal, select the transaction and issue the refund inside PayPal's own dashboard. There is no Presto approval step, no manager PIN, no role gate and no Presto-side record of who approved it; the control surface is a third party's. For the surviving product the boundary is drawn at grade A by the FY2023 10-K, which says Presto Voice 'populates the order in the restaurant's point of sale (POS) system' - Presto is not the system of record for tenders, so voids, refunds, discounts and no-sales are the restaurant's POS's workflow, not Presto's. Tokenised over all 323 documents: 'audit trail' 0, 'override' 0, 'no-sale' 0, 'cash drawer' 0, 'drawer' 0; 'void' 4 docs (the terms-of-use page, the withdrawn 2021 /pos page, and two SEC filings, three of them in the legal sense). Historical disclosure that cuts the other way and still does not satisfy the rubric: the withdrawn presto.com/pos page carried 'Void transactions', 'Refunds / returns' and 'Assign security access levels' as separate bare rows in a feature matrix headed 'Feature Comparison Matrix Basic placeholder', and a 'Roles & Permissions' block - but no published document ever links an approval to a void, a refund, a discount or a no-sale, and that page is uncorroborated ('Presto POS' occurs in 2 of 323 documents; the vendor's SEC filings covering the same period describe no POS product). Scope: Presto Contactless / Presto Touch 2021 for the refund procedure, and Presto Voice as of the FY2023 10-K and after the January 2025 asset sale for the boundary statement. Bound: the presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface. dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application, unread in this pass, which does carry authentication; nothing read here establishes what approval controls it may or may not contain. https://web.archive.org/web/20210228034943id_/https://support.elacarte.com/hc/en-us/articles/360056961412-How-to-process-a-refund-on-PayPal · retrieved 2026-09-06 adversarially verified

B
Unknown

In-product dispute/chargeback dashboard that lists open disputes and allows evidence submission assembled from the POS transaction record. differentiator

payments-chargeback-tooling

Not scored by this record.

Unknown

Tokenized card-on-file for a guest profile, reusable across online ordering, phone orders, and in-store, with no PAN stored by the merchant. differentiator

payments-card-on-file

Not scored by this record.

Unknown

Vendor publishes its deposit schedule and offers a next-day or same-day/instant funding option. differentiator

payments-payout-timing

Not scored by this record.

Unknown

A single account can route settlement funds to different bank accounts per location or legal entity (separate MIDs or split settlement) under unified reporting. differentiator

payments-multi-entity-routing

Not scored by this record.

Unknown

Vendor provides point-to-point encryption and a current PCI DSS 4.x Attestation of Compliance / P2PE listing available to merchants on request.

payments-p2pe-pci4

Not scored by this record.

Kitchen & production

No

Items route to specific KDS stations by item, category, order type, or revenue center, with routing rules configurable per location without vendor involvement.

kitchen-station-routing

A positive published statement, not a zero-hit. The E la Carte/Presto help centre answers this exact question ('How do you change routing to different printers or the KDS?', authored 2014-07-11, archived 2015-12-23, grade B) by saying routing lives in the host POS and the Presto device has no control over it, directing the operator to their own company's helpdesk. Both halves of the rubric therefore fail for the E la Carte / Presto Touch tablet line: station routing is not in the product, and it is not configurable per location by the operator. The same boundary holds for the only product that survives. The FY2023 10-K (grade A) describes Presto Voice as one that 'populates the order in the restaurant's point of sale (POS) system and delivers the order to the restaurant's Kitchen Display System (KDS)' - the POS and the KDS are the customer's, so routing rules are the customer's too. Scope and period: the cited article describes the E la Carte tablet in 2014, a different product from the FY2023 10-K's; both are named here deliberately because they answer the same question in the same direction. Presto Touch was abandoned (FY2024 Q3 10-Q) and the January 2025 asset sale retained only Presto Voice. The one contrary datum, disclosed: the withdrawn 2021 presto.com/pos page listed a 'Presto KDS' add-on module at $29.99/mo and 'Kitchen printing' as a matrix row, but published no routing rule of any kind - and that page is uncorroborated ('Presto POS' occurs in 2 of 323 corpus documents, its feature matrix is headed 'Feature Comparison Matrix Basic placeholder', and the vendor's SEC filings covering the same period describe no POS product; the S-4/A of August 2022 says 'We offer a range of Touch, Vision and Voice products.' and lists 'POS products' among acquisition-target verticals). Bound: presto.com sitemap census (193 unique URLs, re-derived 2026-09-06) + 90 archived retired pages + 32 archived help-centre articles + 8 SEC filings - the marketing and filing surface only; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. https://web.archive.org/web/20151223085815id_/https://support.elacarte.com/hc/en-us/articles/202478384-How-do-you-change-routing-to-different-printers-or-the-KDS- · retrieved 2026-09-06 adversarially verified

B
No

An expo screen consolidates items from multiple prep stations into a single order view and only marks the order complete when every contributing station has bumped its items.

kitchen-expo-consolidation

The FY2023 10-K (fiscal year ended 2023-06-30) describes Presto Voice as delivering the order INTO the restaurant's own KDS. The KDS is the customer's equipment; Presto is the integration. There is therefore no Presto expo screen on which prep stations could be consolidated, and no Presto-side completion state that could wait on every contributing station bumping its items. Absence controls in the vendor's vocabulary, tokenised word-boundary over all 323 documents: 'expo' 0, 'heat lamp' 0, 'prep station' 0, 'bump' 0; 'station' 10 hits in 8 documents, every one blog or careers prose about a work station, none about a kitchen. The only KDS Presto ever offered as its own was a bare 'Presto KDS' price line in the add-on module table of the withdrawn 2021 presto.com/pos page - no feature description at all, and that page is uncorroborated ('Presto POS' occurs in 2 of 323 corpus documents, its matrix is headed 'Feature Comparison Matrix Basic placeholder' and its rows include 'Nest thermostat'; the vendor's SEC filings covering the same period describe no POS product). Scope: Presto Voice, the only product retained in the January 2025 asset sale and the only one the FY2023 10-K still sells to QSR; Presto Touch and the 2021 Presto POS line historically, both gone. Grade B rather than A: the cited sentence is grade-A and affirmative and it settles that the KDS is the customer's, but closing the second half of the claim - that Presto ships no expo consolidation anywhere - additionally needs the corpus bound, which is grade B. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06 with an independent href fixpoint), 90 archived retired presto.com pages, 32 archived help-centre articles, 8 SEC filings. That is the vendor's marketing and filing surface, NOT its product surface - dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application that this pass did not read. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

B
Unknown

Items can be assigned to courses and held, then fired to the kitchen on demand from a server terminal, handheld, or expo screen. differentiator

kitchen-course-firing

Not scored by this record.

Unknown

Per-item cook times are configurable and the KDS staggers item start/display times so that all items on an order finish simultaneously. differentiator

kitchen-prep-time-pacing

Not scored by this record.

Unknown

Kitchen load throttling automatically paces or delays release of incoming digital orders, or extends quoted prep times, once a configurable order-volume or ticket-time threshold is crossed. differentiator

kitchen-order-throttling

Not scored by this record.

Unknown

Pausing a store or 86ing an item from the POS/KDS propagates the pause or availability change back to connected third-party marketplaces (DoorDash, Uber Eats, Grubhub) automatically. differentiator

kitchen-channel-pause-propagation

Not scored by this record.

Unknown

Bumping an order ready on the KDS sends an order-ready status event back to the third-party marketplace so couriers are dispatched on actual readiness. differentiator

kitchen-order-ready-callback

Not scored by this record.

No

KDS supports physical bump bars or programmable keypads in addition to touchscreen interaction, with documented supported models.

kitchen-bump-bar-hardware

Read the distinction precisely: this FY2023 10-K sentence (fiscal year ended 2023-06-30) says Presto Voice SENDS an order to the restaurant's OWN KDS. Delivering an order into a third party's KDS is not shipping a KDS - it is an integration - so this sentence cannot be stretched into a bump-bar capability, and the claim additionally requires DOCUMENTED SUPPORTED MODELS, which is a documentation test the vendor's surface plainly fails. No such documentation exists anywhere: 'bump' returns zero word-boundary hits across all 323 corpus documents, as do 'prep station' and 'heat lamp'. The strongest contrary datum, disclosed: a bare price line, 'Presto KDS' at $29.99/mo billed annually, in the add-on module table of the withdrawn 2021 presto.com/pos page. That establishes that Presto once listed a KDS module for sale; it publishes no hardware detail whatsoever, and the page itself is uncorroborated - 'Presto POS' occurs in only 2 of the 323 corpus documents, its feature matrix is headed 'Feature Comparison Matrix Basic placeholder' with empty plan columns and rows including 'Nest cameras' and 'Nest thermostat', and the vendor's own SEC filings covering the same period describe no POS product (the August 2022 S-4/A business section: 'We offer a range of Touch, Vision and Voice products.', with 'POS products' listed among verticals Presto might acquire). Scope: Presto Voice, the only product retained in the January 2025 asset sale; Presto Touch and Presto POS historically, 2019-2024, both gone. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired presto.com pages, 32 archived E la Carte help-centre articles, 8 SEC filings; support.presto.com 301s to support.elacarte.com, which 403s every client and whose Help Center API returns count 0 - a refusal plus an emptied knowledge base, which bounds nothing. That manifest is the vendor's marketing and filing surface, NOT its product surface: dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application that this pass did not read. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

B
Unknown

An all-day view aggregates outstanding quantities per item (and per modifier) across all open tickets on the station.

kitchen-all-day-counts

Not scored by this record.

Unknown

Configurable target cook times per station or order type, with visual color escalation and/or audible alert when a ticket exceeds target.

kitchen-sla-alerts

Not scored by this record.

Unknown

If a KDS screen or kitchen printer goes offline, tickets automatically fail over to a designated backup printer or screen with no ticket loss. differentiator

kitchen-printer-fallback

Not scored by this record.

Unknown

KDS continues to receive and display tickets from on-site POS terminals when the internet or cloud backend is unreachable. differentiator

kitchen-offline-operation

Not scored by this record.

Unknown

Station screens can display item-level build/assembly detail (recipe steps, portioning, or full modifier breakout) rather than only the ticket line text. differentiator

kitchen-item-build-screens

Not scored by this record.

Unknown

A bumped ticket can be recalled/unbumped, and an individual item can be refired or reprinted without re-entering the order.

kitchen-recall-refire

Not scored by this record.

Unknown

Edits made in the POS to an order already displayed in the kitchen visually flag the added, changed, or removed items on the live ticket. differentiator

kitchen-order-modification-alerts

Not scored by this record.

Unknown

Bumping an order ready triggers a guest-facing notification — SMS/text, app push, or an order-status display board — without a separate product purchase. differentiator

kitchen-guest-ready-notification

Not scored by this record.

Unknown

Waste, spoilage, and remakes can be logged directly at the kitchen/KDS screen with reason codes, and the entry depletes inventory.

kitchen-waste-logging

Not scored by this record.

Unknown

Reports actual ticket and per-station times (average and percentile) sliced by daypart, station, and order channel, exportable to CSV or an API.

kitchen-speed-of-service-reporting

Not scored by this record.

Unknown

Generates prep lists or predicted prep quantities from historical sales and forecast demand, surfaced to kitchen staff as a daily prep task list.

kitchen-prep-forecasting

Not scored by this record.

Delivery, dispatch & third-party channels

Unknown

Product includes a native in-house driver module: drivers are first-class entities with clock-in/out, assignment state (in-store / on-run / returning), and per-driver run history reportable from the POS itself (not via a third-party add-on).

delivery-driver-roster

320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: No driver, courier or dispatch entity in the schema (the 159 'dispatch' hits are redux dispatch calls). The 5 'driver' hits across the 192 site pages are all 2020-2021 third-party-delivery blog commentary. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: over the 362 first-party sources of the production Presto Voice Terminal 'courier' = 0 and the 3 'driver' hits are the conversational 'driver rule' (who is driving the order, AI or human), never a delivery driver; POISON to record - the 957 'dispatch' hits are Redux dispatch. The only delivery construct in the app is a channel label: enum ModalityType { Delivery = 'DELIVERY', Dinein = 'DINEIN', Togo = 'TOGO' } with a per-modality tax rate (deliveryModalityTaxRate) on RestaurantSettings - a tax axis, not a roster. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Retrieved 2026-09-17. || 328th: VERDICT: unknown (held, not `no`: Presto ships NO delivery-driver module at all, and by merge policy a product that lacks the module entirely is held). NEW: the 320th boilerplate note was shared verbatim by five cells, so this cell had never been checked against any corpus built after it. It has now been. the 328th re-grepped, per cell, EVERY Presto corpus already on disk and never individually checked against these cells: dt.presto.com Presto Voice Terminal first-party sources (362 sources, 2,412,777 B, .cache/q325, public source map, production); live.dt.presto.com main.js.map (4,335,583 B, production); portal.voice.presto.com Restaurant Portal (152 first-party TS/TSX files, 2,301,506 B, loader fixpoint, production); the 324th app/portal source dumps (2,422,032 B + 1,053,330 B); the staging portal GraphQL introspection SDL (132,119 B, ~230 generated types) and the 327th 48,894 B copy (STAGING - notes only, carries no verdict); configuration-api.presto.com/openapi.json (13,182 B). TOKENISED, WORD-BOUNDARY, CASE-INSENSITIVE CONTROLS ACROSS ALL SEVEN CORPORA (~12.6 MB): 'drivers' 0, 'courier' 0, 'runner' 0, 'run history' 0, 'assignment' 23 (all Redux/TS assignment of values). POISON WORTH PUBLISHING: 'driver' returns 3 hits in the production Voice Terminal and all three are the SAME METAPHOR for the human agent, not a delivery driver - "The AI never acts on its own once the human has intercepted (the driver rule) - these are advisory only.", "Driver rule: emit only when the human is driving (isAIAutoMode === false)", "The human agent stays the driver - a suggestion is only ever applied on an explicit accept." A published 'driver' count would have been FALSE. 'dispatch' returns 749 hits in the same corpus and every inspected one is Redux `dispatch()`. WHAT PRESTO DOES HAVE: delivery is only an ORDER TYPE. The Voice Terminal's closed `enum ModalityType { Delivery = 'DELIVERY', Dinein = 'DINEIN', Togo = 'TOGO' }` and the RestaurantSettings field `deliveryModalityTaxRate` are the entire delivery construct - a tax rate per modality, with no driver entity, no clock-in/out, no assignment state and no per-driver run history anywhere in the product. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'dispatch' 0; every 'driver' hit (10-K 3, 10-Q 2, S-4/A 1) is the business sense 'key driver of our revenue'. POISON recorded. NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Provides a dedicated dispatch/expo screen showing undispatched orders, driver availability, and elapsed time per order, with multi-order run batching (assigning 2+ orders to one driver as a single run).

delivery-dispatch-board

320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: Same bound: no dispatch board, route or assignment object exists in the production schema or the portal's route set; 'dispatch' in the app source is redux only. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: the production Presto Voice Terminal has no dispatch surface - 'courier' 0, the 3 'driver' hits are the conversational 'driver rule', and the 957 'dispatch' hits are Redux dispatch (POISON). Its 26 'deliver' hits are enum ModalityType { Delivery, Dinein, Togo } with deliveryModalityTaxRate on RestaurantSettings, plus a `DeliveryCallbacks` interface in the issue-report transport - a channel/tax label and an internal callback type, not an order-dispatch screen. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Retrieved 2026-09-17. || 328th: VERDICT: unknown (held, not `no`: no dispatch module exists in the product at all). NEW: this cell carried the 320th boilerplate shared by five cells and had never been individually grepped against the later corpora. the 328th re-grepped, per cell, EVERY Presto corpus already on disk and never individually checked against these cells: dt.presto.com Presto Voice Terminal first-party sources (362 sources, 2,412,777 B, .cache/q325, public source map, production); live.dt.presto.com main.js.map (4,335,583 B, production); portal.voice.presto.com Restaurant Portal (152 first-party TS/TSX files, 2,301,506 B, loader fixpoint, production); the 324th app/portal source dumps (2,422,032 B + 1,053,330 B); the staging portal GraphQL introspection SDL (132,119 B, ~230 generated types) and the 327th 48,894 B copy (STAGING - notes only, carries no verdict); configuration-api.presto.com/openapi.json (13,182 B). CONTROLS (tokenised, word-boundary, case-insensitive, all seven corpora, ~12.6 MB): 'dispatch board' 0, 'expedite' 0, 'expo' 0, 'order queue' 0, 'makeline' 0, 'prep station' 0, 'drivers' 0, 'courier' 0, 'runner' 0. POISON: 'dispatch' alone returns 749 / 167 / 159 / 282 / 167 hits across the five code corpora and every inspected hit is Redux `dispatch()`; 'route' returns 8 / 92 / 67 / 276 / 90 and every inspected hit is React Router; 'bump' returns 6 in the Voice Terminal and none is a KDS bump ("bump `menuModuleRequestSeqId`", "bump the revision twice", "the pill's bump - which straddles the top edge"). Any count of 'dispatch', 'route' or 'bump' published without tokenised inspection would have been FALSE. The only elapsed-time construct in the product is the AI order SLA clock (isOverdue: elapsedMs > SLA_THRESHOLD_MS, sla_breached) on a single live drive-thru session - one order, one lane, no undispatched-order list, no driver availability column and no multi-order run batching. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'dispatch' 0; 'driver' hits are all 'key driver of our revenue / business growth' (POISON). NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Dispatch includes a live map view with geocoded stops and system-generated route sequencing (turn order optimization) for a multi-stop run, not just a static address list. differentiator

delivery-route-map

Not scored by this record.

Unknown

Captures live driver GPS position from a driver-facing mobile app and surfaces it back to the dispatch screen. differentiator

delivery-driver-tracking

Not scored by this record.

Unknown

Address entry is validated/geocoded against a mapping service at order time and rejects or flags out-of-zone addresses before the order is accepted.

delivery-address-validation

Not scored by this record.

Unknown

Tracks per-delivery driver compensation inputs — mileage or distance driven per run, per-delivery flat reimbursement, and driver-retained tips — and exports them to payroll as separate reimbursement vs. wage lines. differentiator

delivery-driver-comp

Not scored by this record.

Unknown

Can hand a first-party order to an on-demand courier marketplace (DoorDash Drive, Uber Direct, Nash, Relay or equivalent) natively from the POS, with the courier quote and status returning into the order record.

delivery-daas-dispatch

Not scored by this record.

Unknown

Supports hybrid dispatch: rules that automatically overflow an order to a DaaS courier when no in-house driver is available, out of zone, or past a wait threshold. differentiator

delivery-daas-fallback

Not scored by this record.

Unknown

Offers direct, first-party certified API integrations with DoorDash, Uber Eats, and Grubhub marketplaces (vendor-owned, not solely resold through Otter/Deliverect/Chowly/ItsaCheckmate middleware). differentiator

delivery-3p-direct-integration

Not scored by this record.

Unknown

Third-party marketplace orders inject automatically into the POS as normal tickets that fire to KDS/printers without tablet re-keying or manual accept.

delivery-3p-injection

Not scored by this record.

Unknown

Menu, pricing, modifiers, and photos publish from the POS master menu out to connected third-party marketplaces, including channel-specific price markups, without maintaining a separate menu in each portal.

delivery-menu-push

Not scored by this record.

Unknown

Marking an item or modifier 86'd in the POS pushes item-level out-of-stock status to connected third-party channels in near real time, and restores it on availability (DoorDash requires item and item-option 86ing of new POS partners).

delivery-86-sync

Not scored by this record.

Unknown

Store can be paused/deactivated on each connected third-party marketplace from inside the POS with a timed auto-reactivation, rather than only from each marketplace's own tablet or portal.

delivery-store-pause

Not scored by this record.

Unknown

Produces a third-party reconciliation report matching marketplace payout deposits to POS-recorded 3P sales, itemizing commission, marketing fees, refunds/adjustments, and identifying missing or unpaid orders. differentiator

delivery-3p-reconciliation

Not scored by this record.

Unknown

Vendor exposes integration health to the operator — failed/rejected order injections, connection status per channel, and alerts on failure — rather than failing silently. differentiator

delivery-injection-error-visibility

Not scored by this record.

Unknown

Guests receive a branded order status / driver tracking page or SMS link on the restaurant's own domain for first-party delivery orders, driven by real order and driver state.

delivery-tracking-page

Not scored by this record.

Unknown

Quoted delivery promise times adjust dynamically from current kitchen load, driver availability, and zone drive time, rather than a fixed per-store constant. differentiator

delivery-promise-time

Not scored by this record.

Unknown

Vendor documents explicit offline behavior for delivery: whether cash delivery orders, driver assignment, and driver settlement continue during an internet outage.

delivery-offline-behavior

Not scored by this record.

Digital ordering & guest-facing channels

Partial

Vendor ships a first-party, commission-free web ordering site on the restaurant's own branding/domain that writes orders directly into the POS with no per-order marketplace commission.

digital-first-party-web

The uncited `no` is wrong: Presto did ship a guest-facing, commission-free ordering surface. This 2021-02-08 operator best-practices post, still served on presto.com today, tells restaurants to include a QR code or an ordering link for Presto Contactless directly on their website and states that Presto Contactless To-Go carries no third-party fees - i.e. no per-order marketplace commission. The archived Presto Support Center corroborates that the surface was a documented product: its 'Presto Contactless Dining' category (2020-10-29 capture) contains an article titled 'Contactless Website', and operators edited their own menus in a Restaurant Portal. That help-centre evidence is title and navigation level only - the archived article bodies are video embeds that did not survive archiving - so it kills the `no` but establishes no detail. `partial` and not `yes` for three reasons: (1) nothing published establishes that the ordering site ran on the restaurant's OWN domain or branding - the published guidance is to link or QR out to Presto Contactless from the restaurant's site, and 'web ordering' and 'own website' are both zero-hit across all 323 corpus documents; (2) the order path is not clearly a direct POS write - a 2020-05-04 post says the order 'is displayed on the Presto Tablet next to the POS device'; (3) the same-era withdrawn Presto POS page sold 'Presto Olo' as a priced add-on module, i.e. online ordering partly resold from a third party, and the S-4/A merger proxy lists 'online ordering' among the verticals Presto might ACQUIRE. Scope: Presto Contactless / Presto Contactless To-Go, 2020-2021, on the Touch tablet line. That line did not survive - the FY2024 Q3 10-Q records the Presto Touch wind-down and abandonment, and the January 2025 asset-sale release leaves Presto Phoenix, Inc. with the Presto Voice platform alone. A present-tense `yes` would be false. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, not its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. https://presto.com/contactless_best_practices/ · retrieved 2026-09-06 adversarially verified

C
Partial

The web/app ordering menu is generated from the same POS menu record as in-store — one item edit propagates to all first-party digital channels without a separate digital menu build.

digital-menu-single-source

Presto is not the POS, so 'the same POS menu record' here is the partner POS (Oracle, PAR, Qu named). The voice-ai page claims the voice channel's menu derives from it: 'Menu Unification streamlines the disparate QSR restaurant menu data into a structured and centralized data format', with 'Efficient Menu Updates' and 'Streamlined Menu Deployment' listed as features. Named shortfalls: (1) Presto's only first-party digital channel is the voice drive-thru/phone agent — it ships no web/app ordering (digital-first-party-web is no), so the claim's web/app subject does not exist here; (2) ingestion is into Presto's own centralized format and 'Streamlined Menu Deployment' is named as a distinct step, and nothing published states a POS item edit reaches the voice channel without that deployment action. Corroborated only by the 2025-02-06 Menu Unification launch press release (grade D), which likewise names 'Streamlined Menu Deployment: Accelerating the onboarding of new locations and implementation of menu updates'. No admin documentation exists anywhere (nine-page page sitemap plus a marketing/press blog archive; no docs subdomains live). https://presto.com/voice-ai/ · retrieved 2026-08-04

C
Unknown

Vendor offers a branded native iOS and Android ordering app (published under the restaurant's own brand in the App Store/Play Store), not only a mobile web page or a shared multi-restaurant marketplace app. differentiator

digital-native-app

Not scored by this record.

Unknown

Guests can create an account with saved addresses, saved (tokenized) payment methods, and one-tap reorder of a previous order across first-party channels.

digital-account-saved-payment

Nothing published settles it, and the analyst's `partial` overstated what was found. The rubric asks for a guest account with saved addresses, saved tokenized payment methods, AND one-tap reorder of a previous order. Absence controls run in the vendor's own vocabulary and bounded to the 323-document corpus return zero for every distinguishing element: 'card on file' 0, 'tokenized' 0, 'create an account' 0, 'guest account' 0; 'saved' tokenises to 9 hits in 9 documents, none about a stored credential or a stored address; 'wallet' (11 docs / 16 hits) refers only to mobile wallets - Apple Pay, Samsung Pay - as a tender at the terminal, never to a card stored in a guest profile. What IS published is a sign-in that is not Presto's: a 2020-05-04 post says the Presto Contactless Dining QR menu gives guests access to 'their loyalty rewards and prior customizations' and that 'Kiosks allow guests to sign in and claim rewards, as well as reorder favorites', and a 2020-06-04 post says 'Guests can sign into their loyalty account, allowing them to easily claim rewards or view past orders.' The account being signed into is a LOYALTY account, and the FY2023 10-K states at grade A that Presto depends on third-party 'loyalty providers' and that its Touch roadmap is 'loyalty integrations' - so the account, the stored history and the rewards belong to a partner, not to Presto, and none of the four rubric elements is established as Presto's own. Note the trap that caught an earlier reading: the archived /lp/rewards page titled 'Presto Rewards' is an OPERATOR incentive scheme whose mechanism is email capture at payment, not a guest account. Scope: Presto Contactless / Presto Touch kiosks, 2020-2021; Touch was abandoned per the FY2024 Q3 10-Q and was not retained in the January 2025 asset sale, which left Presto Phoenix, Inc. with Presto Voice alone. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface. dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application that this pass did not read. || 324th: NEW: No guest account, wallet, card-on-file or tokenisation object in the schema. The 207 'payment' hits on presto.com are almost all 2018-2022 posts about the divested Presto Touch pay-at-table tablet, including /presto-earns-point-to-point-encryption-certification/ and /what-is-pin-debit/, i.e. about a product line the buyer did not retain. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: over the 362 first-party sources of the production Presto Voice Terminal 'saved card' 0, 'card on file' 0, 'stored card' 0, 'wallet' 0, and the only 'payment' hits are two restaurant-settings booleans in the generated GraphQL types (isTipEnabled, skipAdvancedPayments). SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Payment is taken at the restaurant's window on its own POS, so there is no guest account for a card to be stored against. Retrieved 2026-09-17. || 328th: NEW: this cell had never been grepped against ANY of the source-map corpora the 325th-327th built (its note is bound to the 323-document marketing/SEC corpus). It has now been, across the production dt.presto.com Presto Voice Terminal source map (362 first-party sources, 2,412,777 B, .cache/q325) plus live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com (152 files, 2,301,506 B), the 324th app/portal dumps (2,422,032 B + 1,053,330 B), both GraphQL SDLs and configuration-api.presto.com/openapi.json - seven corpora, ~12.6 MB. TOKENISED, WORD-BOUNDARY, CASE-INSENSITIVE CONTROLS, ZERO IN ALL SEVEN: 'card on file' 0, 'credit card' 0, 'saved card' 0, 'payment method' 0, 'tokenized' 0, 'wallet' 0, 'tender' 0, 'CRM' 0, 'rewards' 0, 'past orders' 0. 'reorder' returns 1-2 hits and they are React list-reordering helpers, not guest re-ordering. POISON: 'stored' returns 20 hits in the Voice Terminal and none is a stored credential (stored menu revisions, stored auth token, stored panel split). WHAT THE SHIPPED CODE DOES HOLD, and it is the opposite of a stored credential: the only guest identifier Presto persists is a loyalty code, and it is keyed by a phone number typed per visit - `FEATURE_FLAG_LOYALTY_SUPPORT` gating "// Apply 10 digit loyalty phone number" into order METADATA, an `EventTypes.loyalty`/`loyaltyStatus` event pair, and "// Apply Loyalty Coupon Item". No account, no saved address, no vaulted card. The Restaurant Portal's CLOSED RestaurantSettings type likewise carries only `isPayOnlyEnabled`, `skipAdvancedPayments`, `isTipEnabled`, `isTabEnabled` - store-level payment toggles, never a guest wallet. VERDICT: unknown (held, not `no`: Presto ships no guest-account module at all). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'card on file' 0, 'stored card' 0, 'saved card' 0, 'saved payment' 0, 'tokeniz*' 0, 'reorder' 0. The S-4/A describes the (divested) Touch line only as enabling 'self-serve ordering, payment processing, customer ... personalization, and gaming experiences' - no guest account or wallet. NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Digital checkout presents configurable or algorithmic upsell/cross-sell suggestions (rules-based add-ons or personalized recommendations from order history), with attach-rate reporting on those suggestions. differentiator

digital-upsell-engine

Not scored by this record.

Unknown

Supports future/scheduled orders with per-daypart throttling — capacity limits on orders or items per time slot that automatically close slots when the kitchen is saturated.

digital-scheduled-pacing

Not scored by this record.

Unknown

Single digital ordering flow supports pickup, curbside (with arrival check-in), dine-in/QR table ordering, and delivery, with mode-specific fees and prep timing.

digital-fulfillment-modes

Not scored by this record.

Unknown

Supports guest-facing QR scan-to-order and/or scan-to-pay at the table that opens or attaches to the existing POS check, including splitting and tipping.

digital-qr-table

Not scored by this record.

Unknown

Vendor ships a self-order kiosk running the same menu and modifier logic as the POS, with accessibility-compliant UI and unattended EMV payment. differentiator

digital-kiosk

Not scored by this record.

Unknown

Supports group ordering: a shareable link where multiple participants add their own items to one order under a per-person or total spend cap, with split or single payment.

digital-group-ordering

Not scored by this record.

Unknown

Offers a distinct catering ordering flow with separate catering menu/minimums, lead-time rules, quotes or proposals, deposits, and invoice/house-account or ACH payment terms. differentiator

digital-catering-portal

Not scored by this record.

Unknown

Vendor offers AI voice phone ordering (native or a named certified partner) that answers inbound calls and injects the completed order into the POS without staff transcription. differentiator

digital-voice-ai-phone

Not scored by this record.

Unknown

Supports AI voice ordering at the drive-thru lane, integrated with the POS menu/modifiers and with escalation-to-human handoff.

digital-drivethru-ai

Not scored by this record.

Unknown

Supports conversational SMS or chat ordering/reordering (text-to-order or text-a-link) that lands in the POS.

digital-sms-ordering

Not scored by this record.

Unknown

Supports Order with Google — the restaurant's direct ordering link is provisioned to the Google Business Profile as an ordering option (ideally set as 'Preferred by Business'), rather than leaving marketplace links as the only choice. differentiator

digital-google-order

Not scored by this record.

Unknown

Supports Apple Business Connect ordering placement — an 'Order Food' custom action on the Apple Maps place card pointing at the vendor's first-party ordering flow.

digital-apple-business-connect

Not scored by this record.

Unknown

Loyalty accrual and redemption work inside the first-party digital ordering flow using the same guest identity as in-store, not as a separate post-purchase enrollment.

digital-loyalty-attach

Not scored by this record.

Unknown

Supports guest subscription / membership programs (recurring billing for a delivery-fee waiver, a per-period item entitlement, or a paid loyalty tier) managed in the platform.

digital-subscriptions

Not scored by this record.

Unknown

Discounts, coupon codes, and loyalty offers are defined once and honored identically across POS, kiosk, and first-party digital channels, with channel eligibility controls.

digital-promo-parity

Not scored by this record.

Unknown

Vendor documents that the operator owns and can export first-party guest records (email, phone, consented marketing status, order history) in bulk, without a fee or vendor approval. differentiator

digital-guest-data-ownership

Not scored by this record.

Unknown

Digital checkout uses vendor-hosted fields or a hosted payment page so card data never touches the restaurant's page, with the vendor publishing PCI DSS 4.0 compliance (including the client-side script-integrity requirements effective March 2025) and supporting 3DS.

digital-checkout-pci-sca

Not scored by this record.

Unknown

Digital channels support the same service-fee / dual-pricing / card-surcharge configuration as the POS, with the required guest-facing disclosure and correct handling of jurisdictions and card brands where surcharging is prohibited. differentiator

digital-surcharge-transparency

Not scored by this record.

Guest data, loyalty & marketing

Unknown

Maintains a single guest profile that automatically merges transactions from in-store POS, first-party web/app ordering, and kiosk under one identity (phone or email match), with documented dedup/merge behavior.

guest-loyalty-unified-profile

Examined 2026-08-04. No guest profile, CRM, loyalty or repeat-customer recognition capability is mentioned anywhere Presto publishes: all nine pages of the page sitemap were walked (voice-ai, home, story, team, careers, contact, privacy, terms, data-privacy), the voice-ai page covers order capture, upsells and menu unification only, and the phone-ordering blog post (read 2026-08-04) likewise mentions no loyalty, guest profile or repeat-customer recognition; the remaining site content is a 184-post marketing/press archive. No help centre or docs subdomain exists to consult (probes re-run 2026-08-04, all dead). The claim's merge sources (in-store POS, first-party web/app, kiosk) are channels Presto largely does not operate, but voice personalization of repeat guests is plausible for this product class and its absence is nowhere positively stated, so this remains unknown rather than no. || 323rd: 323rd, CORRECTION + NEW EVIDENCE. (1) CORRECTION to the 2026-08-04 claim that no help centre exists: support.elacarte.com IS live and is a Zendesk Help Center titled "Presto Support Center". node fetch saw a Cloudflare 403 interstitial (5,712 bytes); curl with a browser UA plus Accept/Accept-Language returned 200 and 16,094 bytes. It is EMPTY: the anonymous Help Center API at https://support.elacarte.com/api/v2/help_center/en-us/articles.json?per_page=100 returns {"count":0}, categories.json {"count":0}, sections.json {"count":0}, /hc/sitemap.xml has 0 <loc> elements, and the only hrefs on the home page are /hc/en-us, /hc/en-us/requests/new and two theming assets. So a support centre exists but publishes nothing; the absence is now bounded rather than assumed. (2) Presto's own live drive-thru agent console (dt.presto.com, rebuilt to main.d5e0747c.js, source map 10,796,537 bytes, 1,377 sources / 347 first-party with sourcesContent; a nonsense sibling path returns the 945-byte SPA shell, the real map starts {"version":3) does carry a loyalty path, but it is identifier PASS-THROUGH, not a profile: components/OmniBar/AutocompleteComp.tsx comments "Loyalty Code can be: - Legacy loyalty is of 6 digit coupon code - Panera with loyalty is of 10 digits phone number (Controlled by feature flag)", then "// Call Apply Loyalty Code API" dispatch(applyLoyaltyCode({loyaltyCode})) for <=6 digits and "// For panera 10 digit phone number send loyalty code inside order event" dispatch(addLoyaltiesCode({code})) otherwise; app/middleware.ts maps messagingActions.sendLoyalty to EventTypes.loyalty on the outbound event. Tokenised controls over the 345 first-party code files: rewards 0, "customer profile" 0, kiosk 0. No guest record, no phone/email match, no dedup or merge behaviour is present -- Presto captures the guest's loyalty identifier at the lane and forwards it to the operator's POS/loyalty system. That is an adjacent feature, not a conjunct of this claim, so the cell stays unknown. Retrieved 2026-09-17. || 324th: NEW: No guest, customer or loyalty entity in the schema -- the only person objects are UserProfile / Role / RestaurantGroup, which are staff administration. The 81 'loyalty' hits on presto.com are all blog content. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown, but it is the first FIRST-PARTY loyalty evidence on this record. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. The production terminal implements a drive-thru loyalty MEMBER LOOKUP and nothing more: a feature flag FEATURE_FLAG_LOYALTY_SUPPORT, a constant LOYALTY_LENGTH = 10 (a ten-digit member number the agent keys, beside COUPON_LENGTH = 6), event types loyalty / loyalty_status on the task-router socket, and a closed response enum - 'export enum LoyaltyResponseStatus { sending = ELOYALTYMEMBERSENDING, pending = ELOYALTYMEMBERCHECKING, valid = ELOYALTYMEMBERFOUND, invalid = ELOYALTYMEMBERNOTFOUND }'. There is no guest profile object, no email/phone match key, no channel attribution and no merge or dedup routine ('merge' hits are all Redux state merges), and the member record itself lives in whatever loyalty system the restaurant's POS fronts. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. loyalty 0 across the 152 first-party files: the back office has no guest, profile, membership or loyalty object at all, so the drive-thru member-number lookup recorded on the terminal has no operator-side profile behind it anywhere in Presto's own apps. The portal's only person records are restaurant staff accounts. Retrieved 2026-09-18. || 327th: CLAIM: a single guest profile automatically merging POS, first-party web/app and kiosk transactions under one identity with documented dedup/merge. VERDICT: unknown (product has no guest-identity module at all - held, not `no`, per merge policy). NEW EVIDENCE, and it is the first time Presto's loyalty mechanism itself has been read rather than inferred. https://live.dt.presto.com (Presto Voice Terminal, production) publishes /asset-manifest.json and a REAL 4,335,583-byte source map (begins {"version":3, with 732 sourcesContent entries; nonsense control main.ZZZNONSENSE.js.map returns the 873-byte index.html shell). Its cartSlice.ts ships the whole loyalty path verbatim: `const APPLY_LOYALTY_CODE = 'apply_loyalty_code'` and `export const applyLoyaltyCode = createAsyncThunk('cart/applyLoyaltyCode', async ({ couponCode }: { couponCode: number }` posting `{ check_id: '-1', loyalty_code: couponCode.toString(), session_id: currentSessionId, source: 'PRESTOVOICE', request_id: 'qs_apply_loyalty_code', store_id: restaurantCode }` to `${getOrderApiUrl(NODE_ENV)}/${restaurantCode}/apply/loyalty`, and the reply is polled for `{ couponno, coupontext }` into a three-value COUPON_APPLY_STATUS {PROCESSING, INVALID, SUCCESS}. So loyalty at the Presto lane is a NUMERIC OFFER CODE applied to a check: no phone, no email, no guest id, no account is sent or returned - there is no identity for any profile to merge. The app's complete generated GraphQL schema (generated-interfaces/graphql.ts, 48,894 B, 144 types, 9 enums) likewise contains no Guest, Customer, Member or LoyaltyAccount type; its only person type is UserProfile, a staff/admin login (email, password, loginAttempts, resetCode, restaurantGroupRoles). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). The S-4/A states loyalty is delivered through THIRD PARTIES, not an owned profile: growth 'will continue to depend on third-party relationships including relationships with our POS systems, digital agencies, payment processors, loyalty providers, and other partners', and it lists 'customer relationship management and loyalty' among ACQUISITION-TARGET verticals ('acquisition opportunities in customer relationship management and loyalty, POS products, front of house management, online ordering'), i.e. a capability Presto did not own in 2022; the FY2023 10-K repeats 'loyalty providers' and 'Our Touch R&D team focuses on ... loyalty integrations'. 'guest profile' 0, 'customer profile' 0 in all three filings. Supports the existing hold (no module), not a `no`. NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Orders arriving from third-party marketplaces (DoorDash, Uber Eats, Grubhub) attach to a native guest profile with usable guest identity rather than landing as anonymous tickets. differentiator

guest-loyalty-thirdparty-identity-attach

Not scored by this record.

No

Supports at least two of points-per-dollar, visit/punch-count, and spend-tier accrual as configuration, without custom development or a bolt-on loyalty vendor.

guest-loyalty-accrual-models

A cited `no` resting on affirmative statements, not on silence. The FY2023 10-K (fiscal year ended 2023-06-30) classifies loyalty as something Presto INTEGRATES TO rather than operates: the Touch R&D roadmap is 'loyalty integrations', and the risk factors state that 'the growth of our business will continue to depend on third-party relationships including relationships with POS system providers, payment processors, loyalty providers, digital menu boards and other partners.' The S-4/A merger proxy (August 2022) and the 2023 S-1 both list 'customer relationship management and loyalty' among the verticals Presto might ACQUIRE - a company does not name a vertical as an acquisition target while shipping it. The rubric explicitly excludes 'a bolt-on loyalty vendor', which is exactly what these sentences describe, and no accrual mechanic of any kind is described anywhere in the corpus: 'punch' 0 hits and 'points per dollar' 0 hits across all 323 documents; 'tier' hits 5 documents, all financial or organisational; 'points' is basis points and bullet points. The 10-K's own Presto Touch description stops short of loyalty - 'self-serve ordering, payment processing, personalization and gaming experiences' - and guest insight is not an accrual model. Disclosed contrary datum: the withdrawn 2021 presto.com/pos page sells a module named 'Preto Loyalty' [sic] and bundles 'Loyalty', but that same page frames it as 'Integrations for online ordering, loyalty programs, table-side ordering, and more', and the page is uncorroborated ('Presto POS' occurs in 2 of 323 corpus documents, its feature matrix is headed 'Feature Comparison Matrix Basic placeholder', and the vendor's SEC filings covering the same period describe no POS product). Scope: Presto Touch and the Presto POS line through FY2023; Touch was abandoned per the FY2024 Q3 10-Q and the January 2025 asset sale retained only Presto Voice. IMPORTANT LIMITATION on this verdict: dt.presto.com serves a live first-party operator application titled 'Presto Voice Terminal' whose interface strings were NOT read in this pass and which is known to accept, validate and report on a restaurant's loyalty code. Accepting a loyalty code is not operating an accrual model, so the verdict stands, but the bound behind it - the presto.com sitemap census of 193 unique content URLs, 90 archived retired pages, 32 archived help-centre articles and 8 SEC filings - is a census of the vendor's marketing and filing surface, not of its product surface. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

B
Unknown

Supports status tiers with automatic promotion and demotion driven by rolling-window spend or visit counts. differentiator

guest-loyalty-tiers

Not scored by this record.

Unknown

Documents explicitly what loyalty lookup, accrual, and redemption do when the POS loses connectivity (queue-and-reconcile vs blocked). differentiator

guest-loyalty-offline-behavior

Not scored by this record.

Unknown

Offer/discount engine exposes explicit stacking and precedence rules (exclusive vs combinable, order of application) as configuration. differentiator

guest-loyalty-offer-stacking-rules

Not scored by this record.

Unknown

Offers can be issued to a dynamically defined audience (rules over recency, frequency, spend, or items purchased) rather than only broadcast to the whole list. differentiator

guest-loyalty-targeted-offers

Not scored by this record.

Unknown

Automatically computes recency/frequency/monetary or equivalent lifecycle segments (new, regular, at-risk, lapsed, VIP) without the operator building the queries. differentiator

guest-loyalty-rfm-segmentation

Not scored by this record.

No

Ships triggered lifecycle automations (birthday, first-visit thank-you, lapsed win-back) as configurable always-on campaigns rather than one-off manual sends.

guest-loyalty-lifecycle-automation

A cited `no`. The FY2023 10-K (fiscal year ended 2023-06-30) states that Presto depends on third-party 'loyalty providers', and the Touch R&D roadmap in the same filing is 'loyalty integrations' - so the loyalty engine, and therefore any triggered campaign layer built on top of it, belongs to a partner rather than to Presto. A vendor with no first-party accrual engine ships no always-on birthday, first-visit or lapsed-win-back automation. Absence controls in the vendor's own vocabulary, bounded to the 323-document corpus: 'win-back' 0, 'winback' 0, 'lapsed' 1 hit (unrelated), 'birthday' 10 hits in 6 documents of which none is a Presto feature - four are Presto's own marketing campaigns (a 100-days celebration for America's 250th birthday, a Memorial Day campaign, a franchising post, the blog index), one is a restaurant manager's anecdote about private events, and one is ADVICE TO OPERATORS about the operator's own programme ('Encourage your guests to sign up for your loyalty program. Invite them to fill out their personal information such as birthdays, allergies, and preferences.'), i.e. Presto telling a restaurant to do this, not Presto shipping it. The nearest published Presto capability is a server alert that READS loyalty state held elsewhere - the archived /wearables page: 'Alert servers with information such as birthdays, food allergies, and customer loyalty status.' A read is not a triggered campaign. Note the trap: the archived /lp/rewards page titled 'Presto Rewards' is an OPERATOR incentive scheme run by Presto's marketing team, not a guest lifecycle product. Scope: Presto Touch and the Presto POS line through FY2023; Touch was abandoned per the FY2024 Q3 10-Q and the January 2025 asset sale retained only Presto Voice. IMPORTANT LIMITATION on this verdict: dt.presto.com serves a live first-party operator application titled 'Presto Voice Terminal' whose interface strings were NOT read in this pass and which is known to handle a restaurant's loyalty codes. Nothing read here establishes what campaign surface, if any, that application exposes; the bound behind this verdict - the presto.com sitemap census of 193 unique content URLs (re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles and 8 SEC filings - is a census of the vendor's marketing and filing surface, not of its product surface. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

B
Unknown

Sends both email and SMS campaigns natively from the platform, not solely by handing the list to a third-party ESP. differentiator

guest-loyalty-native-email-sms

Not scored by this record.

Unknown

Handles or explicitly documents A2P 10DLC brand and campaign registration required for the operator to send SMS through the platform.

guest-loyalty-10dlc-registration

Not scored by this record.

Unknown

Reports redemption and incremental sales attributable to a specific campaign or offer, tying redeemed offers to actual check totals. differentiator

guest-loyalty-campaign-attribution

Not scored by this record.

Unknown

Provides self-serve export of the full guest list and transaction history, including contact PII, via CSV or API, without a vendor fee or support ticket. differentiator

guest-loyalty-data-export-portability

Not scored by this record.

Unknown

Exposes a documented outbound guest and order event API or webhook stream that a CDP or marketing platform can subscribe to (e.g. Olo, Punchh, Bridg, Klaviyo). differentiator

guest-loyalty-cdp-event-api

Not scored by this record.

Unknown

Triggers post-transaction feedback requests and routes responses by score, sending low scores to private service recovery and high scores toward public review sites. differentiator

guest-loyalty-review-capture-routing

Not scored by this record.

Unknown

Includes a native referral mechanic with per-guest codes or links, attribution of the referred guest's first order, and two-sided rewards.

guest-loyalty-referral-program

Not scored by this record.

Unknown

Issues an Apple Wallet or Google Wallet loyalty pass with push-updatable balance, as an alternative to requiring a branded app download. differentiator

guest-loyalty-wallet-pass

Not scored by this record.

Unknown

Provides admin tooling to fulfill guest data access and deletion requests (CCPA/CPRA-style) including deletion propagation to loyalty and marketing records.

guest-loyalty-privacy-rights-tooling

Not scored by this record.

Unknown

Enforces loyalty fraud controls such as redemption velocity limits, manager approval on manual point adjustments, and flagging of employee self-redemption, with an audit log.

guest-loyalty-redemption-fraud-controls

Not scored by this record.

Unknown

Vendor documents AI/ML-generated recommendations for offer content, target audience, or send timing (claim-level; verify it is a shipped product feature, not a roadmap statement). differentiator

guest-loyalty-ai-offer-recommendation

Not scored by this record.

Unknown

Offers native stored-value/gift card balances tied to the same guest profile and redeemable across all locations of the brand.

guest-loyalty-stored-value-gift

Not scored by this record.

Labor & workforce

Unknown

Employees clock in and out at the POS terminal using a PIN, badge, or card, with no separate time-clock hardware required.

labor-clock-in-at-pos

Nothing published settles it. The entire evidentiary basis for this cell in the 323-document corpus is a single page: 'time clock' and 'timeclock' each occur in exactly ONE document, the withdrawn presto.com/pos page (Wayback 2021-04-20), where a 'Timeclock' block reads 'Monitor and control management of shifts, time schedules, and time off.' and a feature-matrix row is labelled 'Time clock'. That prose sentence is about scheduling and time off - it does not describe an employee clocking in or out at all, let alone the mechanism the rubric asks for: clock in and out AT THE TERMINAL by PIN, badge or card, with no separate time-clock hardware. Nothing in the corpus describes that mechanism ('clock-in' 0 hits, 'clock in' 1 hit across all 323 documents, and that one is a 2013 E la Carte error-message list, 'EUSERCLOCKEDOUT ... The server needs to clock in', which describes the THIRD-PARTY POS the Presto tablet integrated with, not Presto software). The matrix row cannot supply the difference: that matrix is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, it misspells 'Puchase orders' and 'Preto Loyalty', and its rows include 'Nest cameras', 'Nest thermostat', 'Pizza portioning' and 'Wi-Fi hotspot guest data collection'. The page is also uncorroborated and contradicted by the publisher's own filings: 'Presto POS' occurs in only 2 of the 323 corpus documents; the page's own footer describes the company as 'Our enterprise-grade touch, vision, and voice technologies'; and the August 2022 S-4/A business section, covering exactly the period the page was live, says 'We offer a range of Touch, Vision and Voice products.', lists 'POS products' among verticals Presto might acquire, and recognises FY2021 and FY2020 revenue from the Touch and Voice products alone. Scope: Presto POS as marketed on presto.com in 2021, a line that does not appear as a product in the FY2023 10-K; Presto Phoenix, Inc. retained only Presto Voice after the December 2024 Article 9 auction, and Voice ships no terminal. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: No employee, shift, punch or timeclock object in the schema; 'clock-in' = 0 across both the app source and the 192 site pages. UserProfile is portal login only. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Tokenised over the 362 first-party sources: 'clock-in' 0, 'punch' 0, 'payroll' 0, 'timecard' 0, 'break' (labour sense) 0; the 75 'clock' hits are all wall-clock/skew engineering comments ('never subtracted from a server timestamp: that mixture put the agent machine's clock skew straight into the output'). The only staffing model in the app is the agent session/task router (AgentStatuses, TaskStatuses, RolePermissions), i.e. Presto's own remote HITL workforce, not the restaurant's. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. clock 0, punch 0, shift 0, timecard 0, "time clock" 0 over the 152 first-party files, and the portal's whole people model is the user-management route (Users, User Detail, Restaurants, Restaurant Groups) keyed to the closed RolePermissions enum - accounts and access levels, never worked hours. Held unknown (module absent). Retrieved 2026-09-18. || 328th: NEW POISON, AND IT IS THE KIND A PUBLISHED ZERO GETS WRONG. Controls re-run tokenised, word-boundary, case-insensitive over all seven Presto code corpora now on disk (~12.6 MB): dt.presto.com Presto Voice Terminal (362 first-party sources, 2,412,777 B, production source map), live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com Restaurant Portal (152 files, 2,301,506 B), the 324th app and portal dumps (2,422,032 B + 1,053,330 B), both generated GraphQL SDLs, and configuration-api.presto.com/openapi.json: 'labor' 0, 'employee' 0, 'timeclock' 0, 'clockin' 0, 'punch' 0, 'timesheet' 0, 'payroll' 0 - zero in every corpus. But 'clock in' as a phrase is NOT zero: it returns 2 hits in the production Voice Terminal and BOTH are the word "clock" followed by the word "in" - "\"stuck\" is a *duration* judgment and lives with the overdue clock in useOrderCheckRetry" and "rendered as a WhatsApp-style clock in the compact bubble". And 'shift' returns 54 / 2 / 16 / 29 / 15 hits, of which every inspected one in the Voice Terminal is `Array.prototype.shift()` (state.menusOrder.shift(), state.brandMenusOrder.shift(), state.brandMenuCacheOrder.shift()); the single non-array hit is "an agent hours into a shift ships the same large count on every report", i.e. a Presto call-centre agent's work shift, not a POS time clock. A published 'clock in' or 'shift' count here would have been FALSE. VERDICT: unknown (held, not `no`: Presto ships no labour module at all - no employee entity exists anywhere in its shipped code or its portal schema). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'time clock' 0, 'clock in' 0, 'clock-in' 0, 'timekeeping' 0; the 'employee' hits (S-4/A 204, 10-K 20) are Presto's own headcount/compensation prose. NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Captures a photo at punch (or performs facial verification) attached to the timecard entry, with a photo-only mode available that stores no biometric template. differentiator

labor-photo-punch-verification

Not scored by this record.

Unknown

Supports mobile clock-in restricted by geofence or location validation for staff who do not punch at a fixed terminal.

labor-geofenced-mobile-punch

Not scored by this record.

Unknown

Records time punches while the POS is offline and reconciles them on reconnect without loss or duplicate entries, with the behavior documented. differentiator

labor-offline-time-punch

Not scored by this record.

Partial

Permissions are grantable per discrete action (void, comp, discount, refund, drawer open, price change, report access) per role and per location, not limited to fixed cashier/manager/admin tiers.

labor-granular-rbac

Two Presto consoles, two different models. (1) Presto One (app.presto.com; robots.txt User-agent: * with an empty Disallow; public unauthenticated bundle main.5bb1bc35.js, retrieved 2026-09-13) is Presto's Auth0-gated console for its Voice AI deployments. It gates each module and action on a named permission string, checked as `permissions.includes(...)`. The bundle's complete vocabulary is 16 strings: `view:configuration`, `view:customer-dashboard`, `view:dt-session`, `view:dt-sim`, `view:radio`, `view:report`, `view:report-external`, `view:restaurant-dashboard`, `view:session`, `view:supervisor-dashboard`, `view:voiceops-report`, `write:configuration`, `write:dt-sim`, `write:force-escalation`, `write:report`, `create:users`. The permissions are grantable per user, not only by fixed tier. The bundle calls `GetAuth0Permissions { value description resourceServerIdentifier }`, `GetAuth0RolePermissions($roleId)`, `UpdateAuth0UserRoles($userId, $roles: [String]!)` and `UpdateAuth0UserPermissions($userId: String!, $permissions: [String]!)`, and its user-management screen reports 'Permissions updated successfully!'. Report access, one of the claim's named actions, is among the grantable permissions (`view:report`, `view:report-external`, `write:report`, the last gating 'Manage Tableau Viz'). Location scope is set on the same user record as `allowedBrand` / `allowedFranchises` / `allowedRestaurants` ('Allowed brands' / 'Allowed franchises' / 'Allowed restaurants'). (2) The older Presto Restaurant Portal (portal.voice.presto.com; public source map main.dbeab083.chunk.js.map, same date) is a fixed ladder. `enum RolePermissions { PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, LIMITED, HITL }` is granted per restaurant group through `CreateRestaurantGroupRoleInput { permission: RolePermissions, restaurantGroupId }`, and every access check is `hasRoleAccess`, which compares ranks in `ROLE_ACCESS` (PrestoAdmin 0 ... Limited 4): `ROLE_ACCESS[highestAvailableRole] <= ROLE_ACCESS[neededRole]`. SHORTFALLS: (a) six of the claim's seven actions (void, comp, discount, refund, drawer open, price change) do not exist in Presto's product. Presto Voice takes orders into the restaurant's own POS, so those permissions live in that POS, and tokenised controls over all 623 first-party source files from the three Presto source maps find canVoid / canComp / canRefund = 0. (b) In Presto One, location scope is one set of brand/franchise/restaurant arrays per user, not a different permission set per location. (c) In the Portal, access is the fixed tier ladder the claim excludes. Date caveat: live 2026-09-13 bundle and source map; source code, not documentation. Presto Voice is the only product this record scores present-tense. https://app.presto.com/static/js/main.5bb1bc35.js · retrieved 2026-09-13 adversarially verified

A
Unknown

Manager overrides and approvals are attributed to the individual approver and written to an immutable audit trail queryable after the fact.

labor-manager-override-audit

CLAIM: manager overrides/approvals attributed to the approver in an immutable, queryable audit trail. VERDICT: unknown (unchanged). NEW EVIDENCE: the Presto Voice portal bundle (portal.voice.presto.com main.dbeab083.chunk.js; source map file sagas/menuVersionSaga.ts and utils/webserviceAPI.ts) calls GET `${url}/menu-audit-log/${restaurantCode}` returning {audit_logs, total_logs_count} ("Attempting to fetch audit logs", "Error while fetching audit logs. Please try again later."). SHORTFALL: (1) it logs MENU changes, not manager override or approval events; (2) the IAuditLogs field shape is type-only and erased from the map, so approver attribution and immutability are not shown; (3) selectAuditLogs is defined, but no component in the map consumes it (in the minified bundle the selector results are discarded), so no shipped screen is shown. The dt.presto.com operator console (live build main.d5e0747c.js, 362 first-party sources re-extracted 2026-09-16 from its public source map, the same file list as the 283rd pass) has no override-approval construct; interventions are human-in-the-loop takeovers plus the write:force-escalation permission on app.presto.com. Retrieved 2026-09-16. || 324th: NEW, AND IT CARRIES CONTROL POISON WORTH PUBLISHING: a tokenised 'override' search over the Restaurant Portal source returns 28 hits, and NONE is a manager approval. They are MENU overrides -- enum OverrideType { MENU_ITEM, MODIFIER } and enum OverrideKey { PRICE, TAX, POS_ID, SCREEN_NUMBER, CELL_NUMBER } with createMenuOverride/updateMenuOverride/deleteMenuOverride mutations -- plus CSS style overrides. A naive 'override' control on this vendor would read as support for this claim and would be wrong. Likewise 'dispatch' returns 159 hits that are all redux `dispatch()`. The portal DOES carry an audit facility (utils/webserviceAPI.ts imports IAuditLogsInput; pages/menuVersion/MenuActivityVersionList.tsx and components/menuVersion/CommitDialog.tsx record who committed which menu version), but that audits MENU edits, not discounts, voids or comps at a terminal -- Presto has no terminal. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. The app's generated GraphQL types do carry override concepts - enum OverrideKey, enum OverrideType, MenuOverride/MenuOverrideInput, MutationCreateMenuOverrideArgs - but they are MENU overrides (item availability and menu item settings per restaurant), not a manager approval of a discount, void or price change at a POS, and no approver id, reason code or audit record accompanies them. POISON for future passes: 'override' in Presto's corpus is menu configuration. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. This cell needs the POISON stated, because the portal is full of both words and neither means the claim. "override" returns 197 hits across the 152 first-party files, and every one is a MENU override - the GraphQL query menuOverrides(overrideIds, overrideTypeKeys, overrideType) and the menu-editor components that set item/modifier property overrides - not a manager authorising a void, discount or price change at a terminal. "audit" returns 21 hits and they are one real feature, but the wrong one: fetchAuditLogs / IAuditLogs / auditLogsTotalCount in sagas/menuVersionSaga.ts and reducers/menuReducer.ts, i.e. a CONFIGURATION change log for menu versions. There is no transaction, no cashier and no override event in this product. Held unknown (module absent), not no. Retrieved 2026-09-18. || 327th: A POISONED CONTROL, measured. Over the Presto Voice Terminal's 142 first-party sources (427,540 B, from the real 4.3 MB map) 'override\w*' scores 145 hits and NOT ONE is a manager override: every one is the GraphQL MenuOverride object and its inputs - `export type MenuOverride = { availableOverride: Boolean; id: ID; modalityType: ModalityType; objectPrimaryKey: String; overrideKey: OverrideKey; overrideType: OverrideType; overrideValue: String; secondaryId }` plus menuOverrides on MenuItem and the Create/Update/DeleteMenuOverride mutations. A later pass reporting a non-zero override count on a Presto corpus is reporting menu-item availability/price overrides. In the same corpus 'audit\w*' = 0, 'clock\w*' = 0, 'inventor\w*' = 0, 'webhook\w*' = 0, 'oauth\w*' = 0, 'kds|kitchen' = 0, 'offline' = 0 (sanity controls on the same instrument: 'cart\w*' 961, 'menu\w*' 1,212, so the regex works). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module for this claim in any Presto product). Controls over the same three filings: 'manager override' 0, 'override' 0, 'audit trail' 0; the 526 'approv*' hits in the S-4/A are shareholder/regulatory approval of the business combination (POISON). NEW SURFACES (331st), none settles the cell: (a) EDGAR submissions index data.sec.gov/submissions/CIK0001822145.json = 359 filings (10-K x3, 10-K/A x3, 10-Q x11, S-1 x4, S-1/A x5, S-4 x1, S-4/A x4, last 15-12G); newly grepped this pass: S-4/A amendment 4 (2022-08-10, 21.7 MB, 3.05 M chars stripped), alongside the FY2023 10-K and the 2024-05-21 10-Q already on disk (.cache/q325), whose prior notes did not run these cells vocabulary. (b) App-store census: iTunes search (presto automation / presto voice / presto touch restaurant / elacarte) and Google Play search (presto automation / elacarte / presto voice drive thru) return NO app published by Presto Automation or E la Carte - every "Presto" hit is another publisher (Metrolinx PRESTO card, Presto Pasta, saby.ru Presto-Waiter, Visuality Presto!); Presto ships no store-distributed app, so there are no screenshots to read. (c) certspotter re-run on presto.com: the only presto.com name not in the 327th host list is *.svc.int.staging.presto.com (internal STAGING wildcard, not probed, carries nothing). Retrieved 2026-09-18. adversarially verified

F
Unknown

Builds and publishes employee shift schedules inside the same platform that holds the timekeeping data, rather than requiring a third-party scheduling app. differentiator

labor-native-scheduling

Not scored by this record.

Unknown

Generates recommended staffing levels or labor hours by daypart from the operator's own POS sales history, not just a static template. differentiator

labor-demand-labor-forecast

Not scored by this record.

Unknown

Displays labor cost as a percentage of sales in real time during service on a manager view or POS, not only in end-of-day or next-morning reports. differentiator

labor-realtime-labor-percent

Not scored by this record.

Unknown

Warns or blocks at clock-in when an employee is approaching or would cross a configured overtime threshold, before the overtime is incurred. differentiator

labor-overtime-prevention

Not scored by this record.

Unknown

Configures meal and rest break rules per state or jurisdiction, prompts required break attestation, and flags missed breaks for premium pay. differentiator

labor-break-compliance-by-state

Not scored by this record.

Unknown

Supports predictive-scheduling ordinances by tracking advance-notice deadlines for published schedules and calculating predictability pay owed for employer-initiated changes.

labor-fair-workweek-support

Not scored by this record.

Unknown

Enforces minor-labor restrictions (age-based maximum hours, prohibited time windows, school-day limits) at both scheduling and clock-in.

labor-minor-labor-rules

Not scored by this record.

Unknown

Computes tip pooling and tip-outs automatically per shift from configurable rules (percentage of sales, hours worked, points, or role), rather than requiring a manual spreadsheet.

labor-tip-pooling-rules

Not scored by this record.

Unknown

Retains a per-shift, per-employee record of tips received, amounts contributed to the pool, and amounts distributed from the pool, exportable for audit.

labor-tip-distribution-audit-trail

Not scored by this record.

Unknown

Payroll export separates cash from charged qualified tips and carries a Treasury tipped-occupation code, supporting the W-2 Box 12 code TP and Box 14b reporting required for tax year 2026. differentiator

labor-qualified-tips-w2-reporting

Not scored by this record.

Unknown

Vendor processes payroll itself as a first-party product (tax filing and direct deposit), as opposed to exporting to a third-party payroll provider only. differentiator

labor-native-payroll

Not scored by this record.

Unknown

Exports timecards, wages, and tips in documented formats or via direct integration for at least two major payroll providers (e.g. Gusto, ADP, Paychex, QuickBooks).

labor-payroll-export-formats

Not scored by this record.

Unknown

Employees can request shift swaps or claim open shifts in a self-service app, subject to a manager approval workflow that enforces overtime and role eligibility. differentiator

labor-shift-swap-workflow

Not scored by this record.

Unknown

Provides digital new-hire onboarding that collects W-4 and I-9 documentation and supports E-Verify submission.

labor-digital-onboarding-i9

Not scored by this record.

Unknown

Reports per-employee sales performance metrics (average check, items or category attachment rate, void and comp rate) by server or cashier. differentiator

labor-server-performance-metrics

Not scored by this record.

Inventory, purchasing & cost control

Unknown

Supports multi-level recipe/BOM costing where a recipe can contain sub-recipes (prep items) and plate cost recalculates automatically when any component ingredient's cost changes.

inventory-recipe-bom-costing

Nothing published settles it. The entire evidentiary basis is one uncorroborated page. Tokenised over all 323 corpus documents, 'ingredient' occurs in exactly ONE document - the withdrawn presto.com/pos page (Wayback 2021-04-20) - where an 'Ingredient Inventory' block reads 'Calculate the exact cost of each ingredient and menu item.' and a 'Food Cost Analysis' block reads 'Side-by-side price evaluation based on historical purchasing data.' 'recipe' occurs in 2 documents, the same page and one unrelated blog post; 'sub recipe' occurs in 1, as the bare feature-matrix row 'Recipe / sub recipe'. The multi-level/prep-item half of the claim rests entirely on that matrix row, and the automatic-plate-cost-recalculation half is stated nowhere in the corpus at all. The matrix cannot carry it: it is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, it misspells 'Puchase orders' and 'Preto Loyalty', and its rows include 'Nest cameras', 'Nest thermostat', 'Pizza portioning' and 'Wi-Fi hotspot guest data collection'. Nor is the page corroborated: 'Presto POS' occurs in only 2 of the 323 corpus documents; the page's own footer describes the company as 'Our enterprise-grade touch, vision, and voice technologies'; the companion /pos-integrations page catalogues Nest as an 'IoT System', Opera and Micros Fidelio as hotel PMSs, and PayFast, Optomany and Evertec as South African, UK and LATAM processors - the integration list of a generic white-label multi-country cloud POS; and the vendor's own SEC filings covering the same period describe no POS product, the August 2022 S-4/A saying 'We offer a range of Touch, Vision and Voice products.', listing 'POS products' among verticals Presto might acquire, and recognising FY2021 and FY2020 revenue from the Touch and Voice products alone. Scope: Presto POS as marketed on presto.com in 2021; absent from the FY2023 10-K product description and not among the assets retained by Presto Phoenix, Inc. after the December 2024 Article 9 auction. Also rejected as evidence: the blog post /automate-inventory-management-using-a-i-voice-technology/ (2022-05-19) is industry commentary about what voice AI could do and it puts inventory data 'directly into the POS system' - someone else's. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: No recipe, ingredient, unit or stock object in the schema. The nearest objects are MenuItem/ModifierGroup and the availability mutations updateItemAvailability, updateMenuItemAvailableQuantity and updateMenuItemsAvailableQuantities -- an availability COUNT for voice ordering, with no cost, yield or BOM field. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: over the 362 first-party sources of the production Presto Voice Terminal 'inventory' = 0, 'recipe' = 0, 'ingredient' = 0. POISON measured here: the 10 'cost' hits are all engineering prose in comments ('KNOWN COST, accepted') and the 16 'stock' hits are the item-availability enums UnavailabilityReason { outOfStock, notSold } and CartErrorReason - a automatic 86 signal the terminal reads, not stock on hand. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Held unknown, not `no`, per the lacks-entirely rule. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. recipe 0, "bill of materials" 0, ingredient 0, cost 0 over the 152 first-party files. TWO CONTROLS CARRIED POISON HERE: "recipe" returns 17 in the raw map set, all immer library prose, and "yield" returns 611 in first-party files, every one the redux-saga yield keyword - a naive yield/recipe count on this app would manufacture a false positive, not a false zero. The portal's menu objects carry no cost or component structure. Held unknown (module absent). Retrieved 2026-09-18. || 328th: NEW POISON WORTH PUBLISHING, plus the first grep of this cell against the source-map corpora (its note is bound to the 323-document marketing/SEC corpus). Over all seven Presto code corpora now on disk (~12.6 MB): dt.presto.com Presto Voice Terminal (362 first-party sources, 2,412,777 B, production source map), live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com Restaurant Portal (152 files, 2,301,506 B), the 324th app and portal dumps (2,422,032 B + 1,053,330 B), both generated GraphQL SDLs, and configuration-api.presto.com/openapi.json: 'ingredient' 0, 'inventory' 0, 'waste' 0, 'par' 0 - zero in every corpus. But 'recipe' is NOT zero: 16 / 14 / 16 hits, and every inspected one is IMMER'S API - "The `produce` function takes a value and a \"recipe function\"", "The recipe function is free to mutate its first argument", "relieves you from passing the recipe function every time", `produce(base: any, recipe?: any, patchListener?: any)`. The word is a JavaScript state-library term here, never a menu recipe. A published 'recipe' hit count would have been FALSE. Similarly 'stock' returns 5 hits in the Voice Terminal and all five are 86'ing an item for the day ("is temporarily out of stock.", "Out-of-stock (86'd today) or meal-period inactive"), i.e. availability, not inventory quantity. VERDICT: unknown (held, not `no`: Presto ships no inventory module at all). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module: Presto Voice ships no inventory or costing object). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'recipe' 0/0/0, 'ingredient' 0/0/0; 'inventory' 60/25/17 and every hit is Presto's OWN tablet stock or balance-sheet/credit-agreement prose (e.g. 'We maintain inventory that we believe is sufficient to address a potential interruption in supply' of Flex tablets; 'write-offs of inventory'), POISON recorded. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Stores purchase unit, recipe unit, and count unit per item with explicit conversion factors, plus a yield/waste percentage applied to raw-to-usable conversion.

inventory-unit-conversion-yields

Nothing published settles it. Tokenised word-boundary searches over all 323 corpus documents: 'unit of measure' 0, 'ounce' 0, 'cycle count' 0, 'variance' 0, 'depletion' 0; 'yield' and 'conversion' hit only in financial senses (share yield, note conversion) or the marketing-funnel sense ('conversion rate'), and no hit concerns purchase-versus-recipe-versus-count units or a waste/yield percentage. The closest published surface is the feature matrix of the withdrawn 2021 presto.com/pos page, which names 'SKU / UPC inventory tracking', 'Inventory storage locations', 'Inventory comparison', 'Multiple vendors' and 'Puchase orders' [sic] but no conversion or yield item. That matrix cannot be used as a ceiling OR as a floor: it is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, and its rows include 'Nest cameras', 'Nest thermostat' and 'Pizza portioning'; the page is uncorroborated ('Presto POS' occurs in only 2 of the 323 corpus documents) and the vendor's own SEC filings covering the same period describe no POS product - the August 2022 S-4/A says 'We offer a range of Touch, Vision and Voice products.' and lists 'POS products' among verticals Presto might acquire. The operator documentation that would settle the cell is unavailable: support.elacarte.com 403s every client - a refusal, not an absence - and its Zendesk Help Center API returns count 0; the 32 archived help-centre articles are pay-at-table how-tos with no inventory content. Scope: Presto POS as marketed on presto.com in 2021, a line absent from the FY2023 10-K and not retained in the December 2024 asset sale. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06 with an independent href fixpoint), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. Absence unbounded, so unknown rather than `no`. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: Same bound: no unit-of-measure, conversion or yield field anywhere in the 235 schema types. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: 'inventory' 0, 'recipe' 0, 'ingredient' 0 and 'unit of measure' 0 across the 362 first-party sources of the production Presto Voice Terminal; POISON - the 10 'yield' hits are all the `yieldToMain()` scheduling helper and prose, never a recipe yield. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. "unit of measure" 0, ounce/gram/case as measures 0 over the 152 first-party files; "conversion" 1 (a menu data-shape helper in utils/menu.ts) and "yield" 611 which is the redux-saga keyword - POISON, see inventory-recipe-bom-costing. Held unknown (module absent). Retrieved 2026-09-18. || 328th: NEW: first grep of this cell against the source-map corpora. Over all seven Presto code corpora now on disk (~12.6 MB): dt.presto.com Presto Voice Terminal (362 first-party sources, 2,412,777 B, production source map), live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com Restaurant Portal (152 files, 2,301,506 B), the 324th app and portal dumps (2,422,032 B + 1,053,330 B), both generated GraphQL SDLs, and configuration-api.presto.com/openapi.json: 'unit of measure' 0, 'ingredient' 0, 'inventory' 0, 'waste' 0, 'par' 0, 'ounce' 0-equivalent (no mass/volume unit vocabulary at all). The only quantity concept Presto ships is a per-item remaining count (`updateMenuItemAvailableQuantity` / `updateMenuItemsAvailableQuantities` in the portal schema, feeding the 86 flag) - a single dimensionless number per menu item, with no purchase unit, no recipe unit, no conversion factor and no yield percentage. The portal's generated GraphQL SDL is a CLOSED schema of ~230 types (Menu, MenuItem, MenuItemSetting, ModifierGroup, Category, TimePeriod, HoursOfOperation, Availability, Restaurant, RestaurantGroup, RestaurantSettings, RestaurantBranding, PosProperties, User/Role) containing no unit, UOM, conversion, yield or vendor type; it is STAGING, so it is recorded as corroboration only and carries no verdict. VERDICT: unknown (held, not `no`: no inventory module exists). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'unit of measure' 0, 'recipe' 0/0/0, 'ingredient' 0/0/0; 'inventory' hits are Presto's own tablet stock (POISON, as in inventory-recipe-bom-costing); 'yield' is warrant/financial prose. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Produces a theoretical-vs-actual usage variance report per item for a defined count period, showing theoretical usage from POS sales times recipe, actual usage from counts plus receipts, and the variance in both units and currency. differentiator

inventory-theoretical-vs-actual

Not scored by this record.

Unknown

Depletes ingredient on-hand quantities in near real time as orders are fired at the POS, including depletion driven by modifier selections, not only in an end-of-day batch. differentiator

inventory-realtime-depletion

Not scored by this record.

Unknown

Automatically 86s (marks unavailable) menu items on the POS, online ordering, and connected third-party delivery menus when a component ingredient hits zero or a configured threshold. differentiator

inventory-86-auto-sync

Not scored by this record.

Unknown

Supports full physical inventory, ad-hoc spot counts of a subset, and scheduled recurring cycle counts, with each count's variance recorded as separate history rather than overwriting prior counts.

inventory-count-modes

Nothing published settles it. Tokenised word-boundary searches over all 323 corpus documents: 'cycle count' 0, 'variance' 0, 'physical inventory' 1 (the S-4/A merger proxy, where it is the accounting phrase for counting the company's own tablet stock, not a product feature); 'count' hits 7 documents and every hit is guest counts, calorie counts or car counts. The feature matrix of the withdrawn 2021 presto.com/pos page names inventory items - 'SKU / UPC inventory tracking', 'Inventory storage locations', 'Inventory comparison', 'Puchase orders' [sic] - but nothing about full physical counts, ad-hoc spot counts, scheduled recurring cycle counts, or per-count variance history retained as separate history. That matrix settles nothing in either direction: it is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, and its rows include 'Nest cameras', 'Nest thermostat' and 'Wi-Fi hotspot guest data collection'; the page is uncorroborated ('Presto POS' occurs in only 2 of the 323 corpus documents) and the vendor's own SEC filings covering the same period describe no POS product - the August 2022 S-4/A business section says 'We offer a range of Touch, Vision and Voice products.', lists 'POS products' among verticals Presto might acquire, and recognises FY2021 and FY2020 revenue from the Touch and Voice products alone. No operator documentation survives to test it: support.elacarte.com 403s every client and its Zendesk Help Center API returns count 0, and the 32 archived articles cover tablet operation only. Scope: Presto POS, presto.com 2021 - a product absent from the FY2023 10-K and not retained in the December 2024 asset sale. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. Unknown, not `no`. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: Same bound: no count sheet, cycle-count or par object. updateMenuItemsAvailableQuantities is a bulk 86/quantity write for the voice menu, not a stock count. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: 'inventory' 0, 'count sheet' 0, 'stocktake' 0, 'quantity on hand' 0 across the 362 first-party sources of the production Presto Voice Terminal; the 16 'stock' hits are the availability enums UnavailabilityReason { outOfStock, notSold } and CartErrorReason, i.e. an item-unavailable signal, not a count. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. inventory 0, count 1 (a modifier min/max count in NewModifierGroup - POISON, not a stock count), par 0, waste 0, "spot check" 0 over the 152 first-party files. The nearest surface is the Item Availability page, which is 86ing (availability toggles pushed to the voice agent), not counting. Held unknown (module absent), not no. Retrieved 2026-09-18. || 328th: NEW: first grep of this cell against the source-map corpora. Over all seven Presto code corpora now on disk (~12.6 MB): dt.presto.com Presto Voice Terminal (362 first-party sources, 2,412,777 B, production source map), live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com Restaurant Portal (152 files, 2,301,506 B), the 324th app and portal dumps (2,422,032 B + 1,053,330 B), both generated GraphQL SDLs, and configuration-api.presto.com/openapi.json: 'inventory' 0, 'cycle count' 0, 'physical inventory' 0, 'waste' 0, 'par' 0, 'unit of measure' 0. POISON: 'count' is NOT zero - 55 / 25 / 16 hits - and every inspected one is a UI or telemetry counter (unresolved-item counts the AI flagged, a large count shipped on every report, array lengths); none is a stocktake. 'stock' (5 hits) is 86'ing an item for the day, not a counted quantity. The Restaurant Portal's item-availability surface is the closest thing Presto ships and it is not a count: `updateItemAvailability`, `updateMenuItemAvailableQuantity` and `updateMenuItemsAvailableQuantities` set a remaining-quantity number that decrements to 86, with no count session, no variance and no history type anywhere in the ~230-type portal schema. VERDICT: unknown (held, not `no`: no inventory module exists). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'cycle count' 0, 'stocktake' 0; every 'inventory' hit is Presto's own hardware stock or accounting (POISON). Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Provides a mobile/tablet counting app supporting barcode or QR scanning that continues to accept counts with no network connectivity and syncs on reconnect.

inventory-mobile-count-offline

Not scored by this record.

Unknown

Ships pre-built electronic vendor catalog and order-transmission integrations with named broadline distributors (e.g. Sysco, US Foods, Performance Food Group) that send purchase orders and receive invoices electronically rather than by emailed PDF. differentiator

inventory-vendor-catalogs-edi

Not scored by this record.

Unknown

Ingests supplier invoices from photo, PDF, or email and extracts line-item detail (item, quantity, unit, price) into the inventory ledger without manual line entry. differentiator

inventory-invoice-ocr

Not scored by this record.

Unknown

Tracks per-item purchase price history across invoices and alerts when a received price exceeds the prior or contracted price by a configurable threshold. differentiator

inventory-price-change-alerts

Not scored by this record.

Unknown

Maintains par levels per item per location and generates suggested purchase order quantities from on-hand versus par, with at least one mode driven by a sales forecast rather than a static par. differentiator

inventory-par-auto-suggest

Not scored by this record.

Unknown

Provides a structured waste/spoilage logging workflow with reason codes that debits inventory and reports waste cost separately from usage variance.

inventory-waste-logging

Not scored by this record.

Unknown

Supports inter-location inventory transfers as a two-sided transaction crediting the sending location and debiting the receiving location, with an in-transit or approval state.

inventory-transfers

Not scored by this record.

Unknown

Supports a commissary/central kitchen model where one location produces prep items and issues or sells them to other locations at a computed transfer cost.

inventory-commissary

Not scored by this record.

Unknown

Captures lot/batch numbers at receiving and links them through production to sales or transfers, enabling a backward and forward recall trace.

inventory-lot-traceability

Not scored by this record.

Unknown

Tracks expiration or use-by dates on received and prepped items and surfaces an expiring-soon report or alert before spoilage.

inventory-shelf-life-expiry

Not scored by this record.

Unknown

Exports period COGS and accounts-payable invoice detail in a named accounting system's import format (e.g. QuickBooks, Sage Intacct, NetSuite) with GL account mapping configurable per item category.

inventory-cogs-gl-export

Not scored by this record.

Unknown

Inventory and recipe costing are delivered natively by the POS vendor rather than requiring a separately-contracted third-party product (e.g. MarginEdge, MarketMan, Restaurant365) to function. differentiator

inventory-native-not-partner

Not scored by this record.

Unknown

Joins recipe cost to actual item sales mix to report contribution margin per menu item, and flags items whose margin fell below a configured threshold after ingredient cost changes. differentiator

inventory-menu-margin-linkage

Not scored by this record.

Reporting, BI & data access

Unknown

Provides a live sales dashboard reflecting transactions within minutes of the sale, accessible from both a browser and a mobile app off-premise.

reporting-realtime-dashboard

320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: https://analytics.presto.com resolves and serves a Tableau Server vizportal login page (HTML carries meta name="vizportal-config" data-buildid="2026_2_55_6i5obu1l7rs" and tableau-2.min.js), and a nonsense path on the same host returns a distinct 404, so the host is real and not a catch-all. It is login-gated, and nothing published says it is an OPERATOR-facing product rather than Presto's internal BI, so it cannot support the claim. The production Restaurant Portal contains no dashboard route at all: its route set is menu-editor, menu-version, item-availability, user-management and RestaurantSetting, and 'dashboard' = 0 hits across the 152 app source files (1 hit across the 192 site pages, in a 2021 blog post). reporting.presto.com answers 503 on both the root and a nonsense path. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown, and it distinguishes the two kinds of dashboard. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Tokenised over the 362 first-party sources: 'sales' 0, 'revenue' 0, so there is no operator sales dashboard in the product's terminal. What the app does ship is an AGENT performance surface, the 'HITL 3.0 Pulse' tiles, whose metrics are response time and order processing against an SLA threshold ('A per-turn SLA meter: it counts up from the customer's last utterance, and the agent must send a TTS reply', 'sla_breached: totalMs !== null && totalMs > SLA_THRESHOLD_MS'), with the numbers shipped to New Relic ('what the agent sees escalate is the same event the dashboard counts'). That is Presto's own operations telemetry, not a restaurant sales dashboard, and it is not the claim. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. The back office has NO reporting route at all: over the 152 first-party files dashboard 0, sales 0, revenue 0, and "report" 1 - that single hit is pages/menuVersion/MenuRequestStatus.tsx, a menu-publish request status string (the 21 "report" hits in the raw map set are Apollo/immer library internals - POISON, they vanish once the corpus is restricted to Presto's own 152 files). So both of Presto's production web apps are now bounded and neither contains an operator sales dashboard: the terminal ships only the internal HITL agent-SLA pulse, the portal ships menu and settings CRUD. Held unknown (lacks the module entirely), not no. Retrieved 2026-09-18. || 327th: HOUSEKEEPING SO THE NEXT PASS DOES NOT RE-MINE IT: live.dt.presto.com, which the 327th's first complete crt.sh census of presto.com surfaced as a live production host, is the SAME 'Presto Voice Terminal' app the 325th already censused at dt.presto.com, in a SMALLER build - 142 first-party sources against the 325th's 366, and a set-difference of only 16 new files (isLoading slice/selector, utils/audio.ts, ItemBuilder ModChoice + RecursiveModGroup, Chat/Message, features/messaging/Messaging, OrderReview CouponApplyStatus + CouponItemReview, AISuggestionsBar, Speech/SpeechToText, TimeBasedMenuNotification, Login/Logout, Restaurant/ActiveSessionConfirmDialog, hooks/useApp, hooks/useNewRelic). It is a strict-subset rebuild, not a new app: no dashboard, reporting, analytics or export route in any of the 16. Retrieved 2026-09-18. || 328th: NEW CONTROLS, RUN ACROSS EVERY PRESTO CORPUS AT ONCE FOR THE FIRST TIME (the 326th bounded the Restaurant Portal and the 327th the live.dt rebuild, but neither ran the SALES vocabulary over all of them): 'sales' 0, 'net sales' 0, 'revenue' 0, 'KPI' 0, 'chart' 0, 'daypart' 0, 'pmix' 0 - ZERO in every one of the seven corpora, ~12.6 MB (dt.presto.com Voice Terminal 362 sources; live.dt.presto.com main.js.map; portal.voice.presto.com 152 files; the 324th app and portal dumps; both GraphQL SDLs; configuration-api openapi.json). There is no monetary aggregate anywhere in Presto's shipped code; the only money type is per-check arithmetic (Dinero.js subtotal/taxes/tip/surcharge). POISON WORTH PUBLISHING: 'report' returns 156 hits and 'dashboard' 4 in the Voice Terminal, and NONE is a sales report or an operator dashboard - they are the internal issue-reporter ("Issue report delivery failed") and ENGINEERING observability: "the honest answer there is 'unknown' rather than a number that gets averaged into a dashboard", "what the agent sees and what the dashboard logs decompose the delay identically", "any dashboard or NR query counting it" (New Relic). 'metrics' (44) is entirely client-side latency timing (acknowledgementToPageTransitionMs, taskLoadedCompleteMs, menuDownload). A published 'report'/'dashboard'/'metrics' figure would have been FALSE. VERDICT: unknown (held, not `no`: sales reporting is a module Presto does not ship at all - it writes orders into the partner POS, Oracle/PAR/Qu, which is where the numbers live). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no operator sales dashboard is identified in any product; a live-sales `no` is not bounded because a server-side reporting catalogue behind the login-gated analytics.presto.com Tableau host cannot be assumed empty). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'dashboard' 0/0/0. 'real-time' 2/0/0 (S-4/A only, 2022, Touch era): 'cloud-based operations metrics, security and support monitoring in real time' and the Vision line's 'real-time insights into restaurant operations and analytics' - neither is a sales dashboard, and both lines were abandoned in FY2024. 'analytics' 9/1/0 is Vision, R&D-team or trade-secret prose. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Generates a daily close-out/EOD report reconciling gross sales, net sales, tax, tips, discounts, refunds, tender types, and expected cash deposit in one document.

reporting-eod-closeout

Nothing published settles it either way. The withdrawn 2021 presto.com/pos page publishes a 'Reporting & Analytics' section ('See real-time reports on inventory, food cost, sales, and payroll.') and a feature matrix naming 'Reports', 'Sales dashboards', 'Consolidated reporting', 'Payroll reporting', 'Till management' and 'Royalty / ACH reporting'. That is not the claim. The claim is a single nightly close-out document reconciling gross sales, net sales, tax, tips, discounts, refunds, tender types and expected cash deposit. Tokenised word-boundary over all 323 corpus documents: 'end of day' 0, 'closeout' 0, 'z report' 0, 'cash drawer' 0, 'drawer' 0, 'net sales' 0, 'shift report' 0, 'sales summary' 0; 'till' occurs in 1 document (this page's matrix row) and 'close out' in 1 (the 2023 S-1, in a financing context). So no `yes` is available, and no bounded `no` is available either. The matrix is not a manifest that could bound the absence: it is headed 'Feature Comparison Matrix Basic placeholder', its plan columns are empty in the capture, it misspells 'Puchase orders' and 'Preto Loyalty', and its rows include 'Nest cameras', 'Nest thermostat' and 'Pizza portioning'; the page is uncorroborated ('Presto POS' occurs in only 2 of the 323 corpus documents) and the vendor's own SEC filings covering the same period describe no POS product - the August 2022 S-4/A says 'We offer a range of Touch, Vision and Voice products.' and lists 'POS products' among acquisition-target verticals. The operator documentation that would name an EOD report is gone: support.elacarte.com 403s every client and its Zendesk Help Center API returns count 0. Scope: Presto POS, presto.com 2021 - a product not described in the FY2023 10-K and not among the assets retained by Presto Phoenix, Inc. after the 2024-12-03 auction. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06 with an independent href fixpoint), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: No sales, tender, drawer or daypart-close object in the schema; 'end-of-day' = 0 over the 192 site pages. The portal's nearest concept is the MENU version commit/promote workflow (MenuStagesOverview, CommitDialog), which closes a menu change, not a business day. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: over the 362 first-party sources of the production Presto Voice Terminal 'end of day' 0, 'EOD' 0, 'sales' 0, 'revenue' 0, 'tender' 0, 'cash' 0 (word-boundary), 'deposit' 0. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. The check is created and closed on the restaurant's own POS ('7008 means the POS already holds the FINAL order for this car'), so the close-out document belongs to that POS. Held unknown, not `no`, per the lacks-entirely rule. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. closeout 0, "end of day" 0, "close out" 0, cash 0, deposit 0 over the 152 first-party files (POISON: "drawer" returns 7, all the Material-UI navigation Drawer in AppWrapper.tsx), and the closed ROUTES table has no day-part or close route. Presto's voice agent hands the order to the restaurant's own POS, which is where a close-out lives. Held unknown (module absent), not no. Retrieved 2026-09-18. || 328th: NEW: first grep of this cell against the source-map corpora (its note is bound to the 323-document marketing/SEC corpus). Over all seven Presto code corpora now on disk (~12.6 MB): dt.presto.com Presto Voice Terminal (362 first-party sources, 2,412,777 B, production source map), live.dt.presto.com main.js.map (4,335,583 B), portal.voice.presto.com Restaurant Portal (152 files, 2,301,506 B), the 324th app and portal dumps (2,422,032 B + 1,053,330 B), both generated GraphQL SDLs, and configuration-api.presto.com/openapi.json: 'end of day' 0, 'z report' 0, 'net sales' 0, 'sales' 0, 'revenue' 0, 'tender' 0, 'refund' 0 - zero in EVERY corpus. POISON WORTH PUBLISHING: 'drawer' is not zero (5 / 5 / 6 / 5 hits) and every inspected one is the Material-UI `Drawer` component, not a cash drawer; 'void' returns 101 / 243 / 59 / 557 / 243 and is the TypeScript `void` keyword throughout; 'report' (156 in the Voice Terminal) is the internal issue-reporter and New Relic observability. Publishing any of those three counts would have been FALSE. The only money arithmetic Presto ships is per-check Dinero.js (`computeTotal(subtotal, taxes, tip, surcharge)`) inside one live drive-thru session - no day, no shift, no aggregate and no document. VERDICT: unknown (held, not `no`: Presto ships no close-out module at all; the till and the deposit live in the partner POS it writes into). Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module: Presto Voice populates the order into the operator's own POS, which closes the day). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'end of day' 0/0/0; the FY2023 10-K states Presto Voice 'populates the order in the restaurant's point of sale (POS) system and delivers the order to the restaurant's Kitchen Display System (KDS)', i.e. tendering and close-out live in the operator's POS. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Provides a product mix (PMIX) report at individual menu item AND modifier level with quantity, gross and net sales, filterable by daypart and revenue center.

reporting-pmix-modifier-level

Examined 2026-08-04. Some reporting surface exists — the voice-ai page says operators can 'test new upsell items and combos to gain insight into data that will maximize your offers', and the company publicly quotes non-intervention and upsell-offer rates — but no report catalogue, dashboard screenshot or analytics documentation is published anywhere on the nine-page site (page-sitemap.xml walked), and no help centre or docs subdomain exists. Whether anything resembling an item- and modifier-level PMIX with daypart/revenue-centre filters is offered, versus upsell A/B metrics only, cannot be determined from what the vendor publishes; sales reporting most plausibly lives in the partner POS. || 324th: NEW: The schema models modifiers richly (ModifierGroup, attachModGroupToMenuItem, SecondaryType { MODIFIER_GROUP, CATEGORY }) but carries no sales or mix measure against them -- there is no order or line-item type to aggregate. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown, with a real distinction: the production Presto Voice Terminal is modifier-rich at ORDER time - 1,433 'modifier' hits across the 362 first-party sources, with an ItemBuilder mod-group engine, auto-combo and upsell logic - but carries no reporting of it: 'pmix' / 'product mix' 1 hit (a code comment), 'sales' 0, 'revenue' 0. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. It is the menu-authoring half of the picture the terminal census showed at order time: the portal is a full modifier-group editor (menu-editor/modifier-groups/NewModifierGroup, items/MenuItemDetail, DragModifierGroupContainer) with versioning, staging and export, yet pmix 0, "product mix" 0, sales 0, revenue 0 across its 152 first-party files, and the one "report" token is a menu-publish request status. Presto models modifiers richly and reports on them nowhere. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module; the Voice Terminal is modifier-rich at order time but carries no mix report). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'product mix' 2/0/0, both the business sense 'a broader Touch product mix that has lower equipment costs' (POISON); 'pmix' 0. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Produces an audit report of comps, voids, discounts, and price overrides attributed to the employee who applied them and the manager who approved them, with reason codes and timestamps.

reporting-comps-voids-audit

Not scored by this record.

Unknown

Reports cash over/short per drawer, per shift, and per employee, comparing counted cash to expected cash from tendered transactions and paid-outs.

reporting-cash-over-short

Not scored by this record.

Unknown

Reports sales per labor hour and labor cost as a percentage of sales by hour, by department, and by employee, using actual clocked hours from the POS time clock.

reporting-labor-productivity

Not scored by this record.

Unknown

Reports revenue and margin by fulfillment channel — dine-in, direct online, first-party delivery, and each third-party marketplace separately — net of marketplace commission fees. differentiator

reporting-channel-profitability

Not scored by this record.

Unknown

Provides a consolidated multi-location report with side-by-side location comparison and drill-down from group total to a single location and then to an individual transaction. differentiator

reporting-multiloc-drilldown

Not scored by this record.

Unknown

Includes a self-service report builder letting a non-developer choose dimensions, measures, and filters and save the result, rather than only fixed canned reports. differentiator

reporting-custom-report-builder

Not scored by this record.

Unknown

Supports scheduling any report for automatic recurring delivery by email or to a shared destination on a defined cadence and recipient list.

reporting-scheduled-delivery

Not scored by this record.

Unknown

Offers automated recurring bulk export of transaction-level raw data to a customer-controlled destination (S3, SFTP, Snowflake, BigQuery, or equivalent), not just manual CSV download. differentiator

reporting-raw-warehouse-export

Not scored by this record.

Unknown

Publishes a documented public REST or GraphQL API covering orders, payments, menu, and labor data, with self-service developer credentials obtainable without a signed partner agreement. differentiator

reporting-public-api

Not scored by this record.

Unknown

Emits outbound webhooks for order and payment lifecycle events to a customer-supplied endpoint, with documented retry behavior and payload signature verification. differentiator

reporting-webhooks

Not scored by this record.

Unknown

API and raw-data access are included in the standard subscription rather than gated behind an additional per-location fee, revenue share, or enterprise-only contract. differentiator

reporting-api-not-upcharged

Not scored by this record.

Unknown

Core reporting beyond basic sales summaries — labor vs sales, PMIX, comps/voids audit, multi-location comparison — is available on the entry-level paid plan rather than requiring a higher tier or an add-on analytics SKU. differentiator

reporting-tier-paywall

Not scored by this record.

Unknown

Documents a historical retention window of at least 24 months of transaction-level detail queryable in the reporting UI, with no silent truncation or archive retrieval fee. differentiator

reporting-history-retention

Not scored by this record.

Unknown

Sends proactive push or email alerts when an operator-configured metric breaches a threshold or deviates from its historical pattern (e.g. void spike, sales below forecast, discount rate anomaly). differentiator

reporting-anomaly-alerts

Not scored by this record.

Unknown

Offers a natural-language query or AI assistant that answers ad-hoc questions against the operator's own sales and labor data and returns a figure or chart, not a generic help-article response.

reporting-nl-query

Not scored by this record.

Unknown

Reports guest-level analytics including new versus returning guest counts, visit frequency, and lifetime spend cohorts tied to identifiable guest records from loyalty or online ordering. differentiator

reporting-guest-cohorts

Not scored by this record.

Unknown

Produces a forward sales forecast at daypart or hourly granularity from the location's own history, exposed in the reporting UI and consumable by scheduling or ordering workflows. differentiator

reporting-sales-forecast

Not scored by this record.

Unknown

Generates payroll- and tax-ready tip reporting: declared versus charged tips per employee, tip pool distribution detail, and a tax liability summary by jurisdiction.

reporting-tip-tax-compliance

Not scored by this record.

Multi-location, franchise & enterprise governance

Partial

Supports a named organizational hierarchy of at least three levels (e.g. enterprise > region/group > location) as a first-class object that reporting and permissions can be scoped to, not just a flat list of locations.

multi-location-org-hierarchy

Source code of Presto One (app.presto.com; the HTML shell's <title> is 'Presto One'; robots.txt is User-agent: * with an empty Disallow; public unauthenticated bundle main.5bb1bc35.js, 3,494,772 bytes, retrieved 2026-09-13). Presto One is Presto's Auth0-gated console for its Voice AI deployments, used by Presto staff and by customer logins. The bundle's role enum lists `brand-manager`, `franchise-manager` and `restaurant-manager` (alongside `customer-manager`, `hitl-agent`, `PrestoFTE`, `session-admin` and `voiceops-supervisor`), and user management gives each user three scope arrays, `allowedBrand`, `allowedFranchises` and `allowedRestaurants`, labelled 'Allowed brands' / 'Allowed franchises' / 'Allowed restaurants'. The data model has the same three tiers: GraphQL `GetBrandChains` takes `$brands: [String]` and `GetChainRestaurants` takes `$chains: [String], $brands: [String]`, both returning `name` and `restaurantCode`. On login, a customer user's `userMetadata.brand` is used to fetch that brand's franchise and restaurant rows, and only those rows populate the Presto IQ dashboard chunk (dashboard.27ba50e4.chunk.js). That chunk filters by 'All Brands', 'Ownership Type' ('All Ownership' / 'Franchisee'), 'Franchisee Group' ('All Franchises') and restaurant. So brand > franchisee group > restaurant exists in code as both a user-scope object and a reporting filter. SHORTFALLS: (1) the `allowedFranchises` / `allowedRestaurants` fields appear only in the user-edit form and its defaults (2 occurrences each); no client code applies them, and server-side enforcement is not visible; (2) the only reporting surface that walks the tiers is the Presto IQ dashboard, whose build points at `https://api-staging.presto.com/iq/v1` and whose brand loader keeps only rows where the brand is `WIENERSCHNITZEL`, so it is a single-customer pilot, not an evidenced general feature; (3) there is no region or district tier (0 hits for `district`; every `region` hit is AWS SDK or ARIA plumbing), and `CreateRestaurantGroups` stores a flat group of `brand`, `name` and `restaurants`; (4) this is the console of a drive-thru voice AI vendor scoping its own deployments, not a POS location tree. Date caveat: a live 2026-09-13 bundle; minified code, not documentation. Presto Voice is the only product this record scores present-tense. https://app.presto.com/static/js/main.5bb1bc35.js · retrieved 2026-09-13 adversarially verified

A
Partial

A corporate-level menu can be authored once and published to a chosen set of locations in a single action, with a publish/version history showing what was pushed, when, and by whom.

multi-location-central-menu-publish

The voice-ai page claims central multi-location menu control: 'Brand-Level Menu Management' 'allowing simultaneous management of multiple restaurant locations and menus rather than adjusting individual locations', with 'Streamlined Menu Deployment' listed as a feature — a first-party claim of author-once, deploy-to-many for the voice channel. Named shortfalls: (1) this governs Presto's voice-channel menu overlay only — the menu of record stays in the partner POS (Oracle, PAR, Qu) that Menu Unification ingests from, so it is not a corporate menu published to the locations' POS; (2) the claim's publish/version history (what was pushed, when, by whom) appears nowhere — neither on the feature page nor in the 2025-02-06 Menu Unification launch release, and no admin documentation of any kind exists (nine-page page sitemap plus marketing/press blog archive; doc subdomains dead). Feature-page evidence, so partial rather than yes. https://presto.com/voice-ai/ · retrieved 2026-08-04

C
Unknown

Corporate menu items expose per-field override rules so a location can change some attributes (e.g. price, availability) while corporate locks others (e.g. name, image, recipe), and locked fields are not editable at store level. differentiator

multi-location-local-override-policy

Not scored by this record.

Partial

Supports price tiers/zones so one menu item carries different prices per location group, per order channel, and per daypart without duplicating the item record.

multi-location-price-zones

Source of Presto's live first-party 'Presto Restaurant Portal' (portal.voice.presto.com; robots.txt 'User-agent: * / Disallow:' (empty)). The asset-manifest.json lists public source maps, and main.dbeab083.chunk.js.map (1,408,534 bytes, retrieved 2026-09-13) carries 152 first-party sources with sourcesContent (148 TypeScript/TSX files plus 4 images), including generated-interfaces/graphql.ts, the menu/restaurant GraphQL schema that dt.presto.com's source map also ships. In that schema a price variant is a `MenuOverride` row rather than a second item: `{ overrideType: OverrideType (MENU_ITEM | MODIFIER); objectPrimaryKey; secondaryType: Maybe<SecondaryType> (MODIFIER_GROUP | CATEGORY); secondaryId; overrideKey: OverrideKey (PRICE | TAX | POS_ID | SCREEN_NUMBER | CELL_NUMBER); modalityType: Maybe<ModalityType> (DINEIN | TOGO | DELIVERY); overrideValue; availableOverride }`. The item editor (pages/menu-editor/items/MenuItemDetail.tsx) renders one block per modality, `renderModality("dineIn", "Dine In", ...)`, `"To-go"` and `"Delivery"`, with validation messages 'Dine-in price is required' / 'To-go price is required' / 'Delivery price is required' and an input titled 'Override the default price here'. It reads the To-go and Delivery prices as `overrides.find(...)` over the item's own override rows (`modalityType === ModalityType.Togo ... overrideKey === OverrideKey.Price`). components/menu/DragItemList.tsx adds 'Enter price override for this modifier group here' and 'Enter price override for this category here'. The operator console consumes the same rows: live.dt.presto.com utils/menu.ts takes the `secondaryType` override first, then the `modalityType` override, and falls back to `menuItem.price`. So one item carries a different PRICE per order channel, and per parent modifier group or category, without duplicating the item record. SHORTFALLS: (1) no location-group price tier is observed in the Portal. Menus and overrides are keyed per `restaurantCode`; `RestaurantGroup` is only `{ id, groupName, restaurants }`, with no pricing field; and spreading a menu across sites is a copy (webserviceAPI.ts posts to `.../menu/copy` with `applicable_restaurants`; MenuExport.tsx labels its picker 'Search location to export to (Max N selections)'), i.e. duplication. NOT EXCLUDED: dt.presto.com's newer 'unified' brand menu scopes unavailable entities and business rules by `restaurant_group`, but its type file `types/brandMenu` is elided from the map (25 source files import it, 0 are shipped), so whether it prices by restaurant group is unobserved rather than absent. (2) No daypart price is observed: `TimePeriod` carries `startDate endDate availability timePeriodCategoryMappings`, which gates category availability, not price. (3) Tokenised controls over all 623 first-party .ts/.tsx/.js/.jsx files from the three Presto source maps (portal 148, dt 345, live.dt 130): priceLevel / priceZone / priceTier / priceList / daypart = 0. Every `restaurant_group` hit is availability, a business rule or express-mode scoping. (4) This is the menu that Presto Voice reads for drive-thru order-taking, not a POS price book. Date caveat: live 2026-09-13 source map; generated types and UI source, not documentation. Presto Voice is the only product this record scores present-tense. https://portal.voice.presto.com/static/js/main.dbeab083.chunk.js.map · retrieved 2026-09-13 adversarially verified

A
Unknown

Menu, price, and promo changes can be scheduled to activate at a future date/time interpreted in each target location's own timezone, and can be rolled back after activation. differentiator

multi-location-scheduled-publish

Not scored by this record.

Unknown

A new location can be provisioned by cloning a documented configuration template (menu, taxes, roles, printers, modifiers, tenders) rather than being configured from scratch, and the vendor publishes the expected time-to-open. differentiator

multi-location-new-store-template

Not scored by this record.

Unknown

The permission model distinguishes a franchisor/corporate tenant from an independently-owned franchisee tenant, so corporate can see franchisee sales and enforce config while the franchisee owns its own employees, banking, and labor data. differentiator

multi-location-corp-vs-franchisee-roles

Not scored by this record.

Unknown

Calculates franchise royalty, ad-fund, and marketing-fee amounts automatically from POS net sales on a defined schedule, with a configurable royalty basis (gross vs net of discounts/comps/third-party). differentiator

multi-location-royalty-calculation

Not scored by this record.

Unknown

Supports automated ACH/debit collection of calculated royalties and fees from franchisee accounts, with a franchisee-visible statement of what was charged.

multi-location-royalty-collection

Not scored by this record.

Unknown

Provides above-store reporting that aggregates sales, labor, discounts, voids, and item mix across any selected set of locations in one view, with store-vs-store ranking and variance flags.

multi-location-consolidated-reporting

Not scored by this record.

Unknown

Item-level sales roll up across locations under a shared corporate item ID even when stores have renamed or locally priced the item. differentiator

multi-location-normalized-item-rollup

Not scored by this record.

Unknown

Gift cards issued at one location are redeemable at any other location in the brand, with a reported outstanding-liability balance and inter-store settlement/redemption reconciliation between owners.

multi-location-cross-location-giftcard

Not scored by this record.

Unknown

A single customer loyalty profile, balance, and stored order history is shared across all locations in the brand rather than being per-location.

multi-location-cross-location-loyalty

Not scored by this record.

Unknown

A single location/terminal can operate two or more distinct brands or virtual brands with separate menus, receipts/branding, and separately reportable revenue, on the same hardware and drawer. differentiator

multi-location-multi-brand

Not scored by this record.

Unknown

Tax configuration is per-location with support for multiple simultaneous tax rates, jurisdiction-specific rules (e.g. prepared-food vs grocery, inclusive vs exclusive tax), and per-location tax exemptions.

multi-location-multi-tax-jurisdiction

Not scored by this record.

Unknown

Supports locations operating in different currencies and languages within one enterprise account, with consolidated reporting converted to a reporting currency.

multi-location-multi-currency-locale

Not scored by this record.

Unknown

Produces an immutable audit log of who changed which configuration object (price, tax, permission, discount) at which location and when, exportable or queryable by corporate. differentiator

multi-location-config-audit-log

Not scored by this record.

Unknown

Supports SSO via SAML or OIDC against the customer's identity provider for back-office/above-store users, with SCIM or equivalent for automated deprovisioning. differentiator

multi-location-enterprise-sso

Not scored by this record.

Unknown

Publishes a documented multi-location API (or data warehouse/BI export) that returns transaction-level data across all locations in one authenticated call, without per-location credentials. differentiator

multi-location-enterprise-api

Not scored by this record.

Unknown

Labor rules (overtime, break enforcement, predictive-scheduling compliance) are configurable per location or location group and enforced at the terminal, not just reported after the fact.

multi-location-central-labor-policy

Not scored by this record.

Hardware & physical footprint

Unknown

The POS software runs on commodity off-the-shelf hardware (standard iPads, Android tablets, or PCs) that the operator can buy from a third party, rather than only on vendor-supplied proprietary terminals. differentiator

hardware-commodity-devices

Not scored by this record.

No

Vendor documentation names the specific client operating systems supported (iOS/iPadOS, Android, Windows, Linux/web) and states minimum OS versions and device specs.

hardware-os-platforms

The claim is about publication — vendor documentation naming supported client operating systems with minimum versions and device specs — which is directly verifiable by exhausting what Presto publishes. The sitemap index (sitemap_index.xml) yields three sitemaps: page-sitemap.xml enumerates nine pages (home, voice-ai, team, careers, contact-us, presto-story, privacy-policy, terms-of-use, data-privacy), none a hardware, spec or documentation page; post-sitemap.xml lists 184 blog/press posts whose slugs were grepped for hardware/spec/device/OS/guide/manual terms with only marketing posts matching; the third is a video sitemap. The voice-ai page's only hardware content is that Presto Voice 'seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)' and 'installs in just a few hours' — no OS, version or device spec is named anywhere. docs./help./support./api./developer./kb.presto.com re-probed 2026-08-04: NXDOMAIN or TLS failure on all (support.presto.com serves a wildcard *.wpengine.com certificate), and dt.presto.com is a client-rendered app shell with no readable content. The documentation the claim requires verifiably does not exist; this says nothing about what OS the Presto-installed equipment actually runs. https://presto.com/page-sitemap.xml · retrieved 2026-08-04

B
Unknown

Offers a purpose-built handheld ordering device with an integrated card reader (not a phone case add-on), with published drop rating and IP ingress rating.

hardware-handheld-purpose-built

Not scored by this record.

Unknown

The handheld supports hot-swappable or field-replaceable batteries, or the vendor publishes a rated battery life for a full shift. differentiator

hardware-handheld-battery-swap

Not scored by this record.

Partial

Terminals continue to take orders, print to kitchen, and record cash sales with the internet down, and the vendor documents explicitly which functions degrade (card auth, loyalty lookup, refunds).

hardware-offline-mode

The uncited `no` is wrong, but only one narrow offline capability is actually documented. The archived pay-at-table product page (Wayback 2020-04-22, grade C) and the archived restaurant-tablet page (Wayback 2019-04-14) both publish a named mechanism on the Presto Touch / PrestoPrime tablet - a 'Store and Forward' capability so that guests can continue to pay even if the restaurant loses internet connectivity. That is a real, twice-published, product-specific offline mode on a product the vendor's SEC filings name, and it is why this cell is `partial` rather than `no`. It is also why it is not `yes`, and not more than `partial`: store-and-forward covers PAYMENT ONLY. None of the three functions the claim names - continuing to take orders, printing to the kitchen, and recording cash sales - is documented as working offline anywhere in the 323-document corpus, and the claim's second half, the vendor documenting explicitly WHICH functions degrade (card auth, loyalty lookup, refunds), appears nowhere at all. Tokenised over all 323 documents: 'offline' 5 docs / 8 hits, 'degraded' 0, 'no internet' 1, 'no wi-fi' 1. Broader offline claims do exist but are not usable: the withdrawn presto.com/pos page (2021-04-20) carries 'Offline functionality. No internet, no Wi-Fi, no problem.', a 'Never-Down Network' block and an 'Offline transactions' matrix row, but that page is uncorroborated - 'Presto POS' occurs in only 2 of the 323 corpus documents, its matrix is headed 'Feature Comparison Matrix Basic placeholder' with empty plan columns and rows including 'Nest thermostat', and the vendor's own SEC filings covering the same period describe no POS product (the August 2022 S-4/A: 'We offer a range of Touch, Vision and Voice products.', with 'POS products' listed among acquisition-target verticals). Scope: Presto Touch / PrestoPrime, 2019-2023. The FY2024 Q3 10-Q records the Touch wind-down and impairment and states of the abandoned next-generation device that 'Both of these abandoned technologies had not previously been placed into service.'; the January 2025 asset-sale release leaves Presto Phoenix, Inc. with the Presto Voice platform alone, and Voice ships no terminal, so nothing here is a present-tense capability. https://web.archive.org/web/20200422234905id_/https://presto.com/pay-at-table-for-restaurant · retrieved 2026-09-06 adversarially verified

C
No

Sells or supports a dedicated kitchen display system with bump-bar or touch input, station routing, and course/fire timing, as a first-party product rather than an integration-only dependency.

hardware-kds

A cited `no` whose basis is an affirmative sentence, not a silence. The FY2023 10-K (fiscal year ended 2023-06-30) describes Presto Voice as delivering the order to THE RESTAURANT'S KDS - the KDS is the customer's existing equipment and Presto is the integration, which is exactly the 'integration-only dependency' the claim excludes. Presto Voice is the only product that survives: the FY2024 Q3 10-Q records the Presto Touch wind-down and impairment ('Both of these abandoned technologies had not previously been placed into service.'), and the January 2025 announcement of the December 2024 Article 9 sale says the new entity is 'focused only on rapidly growing its market-leading Voice AI business', with its own About boilerplate reading 'Presto offers its AI solution, Presto Voice, to quick-service restaurants (QSR)'. Contrary history, disclosed rather than hidden: the withdrawn presto.com/pos page (Wayback 2021-04-20) lists a 'Presto KDS' add-on module at $29.99/mo billed annually, and the 2014 E la Carte help-centre article 'How do you change routing to different printers or the KDS?' answers 'These routing settings are determined by your POS configuration, and the Presto devices have no control over them.' - so even in the tablet era KDS routing belonged to the third-party POS. The 2021 Presto KDS module is a bare price-list name with no published description of bump-bar or touch input, station routing or course/fire timing; it appears in one document of 323; and the page carrying it is uncorroborated - its feature matrix is headed 'Feature Comparison Matrix Basic placeholder' with rows including 'Nest thermostat', and the vendor's own SEC filings covering the same period describe no POS product (August 2022 S-4/A: 'We offer a range of Touch, Vision and Voice products.', with 'POS products' listed among verticals Presto might acquire). Scope: the vendor's shipping product as of the FY2023 10-K and after the 2024 sale. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface; dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read, though what is known of it corroborates rather than undercuts this verdict, since it reports errors returned to Presto BY the restaurant's POS. https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm · retrieved 2026-09-06 adversarially verified

B
Unknown

Offers a self-order kiosk running the same menu and modifier engine as the POS, in both countertop and freestanding form factors, with integrated payment and accessibility (ADA) compliance documented. differentiator

hardware-kiosk

Not scored by this record.

Unknown

Supports drive-thru-specific hardware: outdoor digital menu boards, order confirmation displays, and speaker/headset integration, with a documented timer/speed-of-service measurement.

hardware-drive-thru

Not scored by this record.

Unknown

Works with standard ESC/POS thermal receipt and kitchen printers from more than one manufacturer (e.g. Epson and Star), including LAN/Ethernet printers, rather than only vendor-branded printers.

hardware-printer-compatibility

Not scored by this record.

Unknown

Supports the standard peripheral set — cash drawers (including multi-drawer per terminal), barcode scanners, scales for by-weight items, and customer-facing displays — with a published compatibility list.

hardware-peripherals

Not scored by this record.

Unknown

Card entry happens on a PCI-listed PTS device using validated point-to-point encryption, so the POS application and tablet stay out of PCI scope; the vendor states the merchant's SAQ type.

hardware-p2pe-terminal

Not scored by this record.

Unknown

Supports contactless acceptance directly on a commodity phone or tablet (Tap to Pay on iPhone / Tap to Pay on Android) with no separate reader. differentiator

hardware-tap-to-phone

Not scored by this record.

Unknown

Hardware prices are published per SKU on the vendor's public site, rather than quote-only. differentiator

hardware-pricing-transparency

Not scored by this record.

Unknown

Hardware can be purchased outright (owned) as an alternative to a mandatory lease or subscription-bundled rental, and the vendor states which. differentiator

hardware-ownership-vs-lease

Not scored by this record.

Unknown

Vendor documentation confirms whether hardware purchased from the vendor remains usable with other software after cancellation, i.e. it is not software-locked or remotely bricked. differentiator

hardware-usable-after-churn

Not scored by this record.

Unknown

Publishes a hardware warranty term and a replacement/advance-exchange SLA with a stated turnaround (e.g. next-business-day depot swap). differentiator

hardware-rma-sla

Not scored by this record.

Unknown

Staff can run the ordering or payment app on their own personal phone (BYOD) with a documented permission and security model.

hardware-byod

Not scored by this record.

Unknown

Provides a remote device-management console showing each terminal, printer, and KDS as online/offline, with remote reboot, software-version visibility, and staged rollout of updates. differentiator

hardware-remote-device-management

Not scored by this record.

Integrations, API & extensibility

Unknown

Public, self-serve API reference documentation is readable without a signed partner agreement, NDA, or sales call.

extensibility-public-api-docs

VERDICT: unknown (unchanged; not a public self-serve API). NEW SURFACES (crt.sh, 2026-09-16): (1) configuration-api.presto.com/openapi.json and configuration-api-staging.presto.com/openapi.json, 200, 13,182 bytes each, FastAPI "Configuration-API" 0.1.0 with /docs and /redoc (a nonsense path 404s at 22 bytes, not a catch-all): 18 operations, all internal restaurant configuration, e.g. "GET /settings/{restaurant_code}", "PUT /v1/overrides/{restaurant_code}" ("This service updates override configuration for the restaurant."), "GET /v1/match Get Restaurants Matching Setting Criteria", "PUT /v1/controlpanel/{restaurant_code}/voice Toggle Enabled Status"; no securitySchemes, no auth guide, no partner onboarding. (2) staging-events.presto.com serves the same 6,263-byte events spec already judged internal. (3) api.portal.staging.presto.com/graphql answers anonymous introspection (84,817 bytes: Query restaurants/menu/users/roles, Mutation createMenuItem/updateRestaurantSettings/createUserAdmin, subscriptionType null); production api.portal.voice.presto.com/graphql refuses (400 "An Error Has Occurred"). All are unlinked internal or staging services with no documentation addressed to outside developers, which is not the claim. Retrieved 2026-09-16. || 323rd: 323rd, NEW BOUND (no value change). The 319th already held configuration-api.presto.com and events.presto.com; this pass adds the missing documentation surface. support.elacarte.com, found via crt.sh on elacarte.com (21 names), is a live Zendesk Help Center titled "Presto Support Center": node fetch returns a Cloudflare 403 interstitial, but curl with a browser UA plus Accept and Accept-Language returns 200 at 16,094 bytes (a FALSE refusal -- undici's TLS fingerprint is blocked where curl's is not). Its anonymous Help Center API returns {"count":0,"articles":[]}, {"count":0,"categories":[]} and {"count":0,"sections":[]}, /hc/sitemap.xml contains 0 <loc> elements, and the rendered home page links only /hc/en-us/requests/new (a ticket form). So Presto operates a support centre that publishes zero articles -- there is no developer documentation there to find, and this is now a measured zero on the vendor's own support host rather than an inference. CORPORATE STATUS (SEC EDGAR CIK 1822145): Presto Automation Inc. was delisted from Nasdaq on 2024-08-08 (Form 25-NSE, 2024-09-06), filed Form 15-12G to terminate Exchange Act registration on 2024-09-19, and has filed nothing since; the 8-K of 2024-09-16 records shares sold to Triton Funds at $0.00184 and states "The Company intends to terminate its registration, and suspend its obligation to file reports, under the Exchange Act by filing a Form 15 as soon as is practicable." The drive-thru product hosts (dt.presto.com, live.dt.presto.com, portal.voice.presto.com) are still live and dt.presto.com was rebuilt since the 281st, so the product is running, but no post-2024 public filing exists. Retrieved 2026-09-17. || 324th: NEW: no public developer documentation exists, but the API itself is now characterised from a PRODUCTION artifact rather than the previously-noted staging introspection. The shipped generated-interfaces/graphql.ts (127,884 bytes) gives the full production Query/Mutation shape. A generated type file recovered from a bundle is not published documentation, so the claim (docs are public) stays unknown, not `yes`. Controls: 'developer' = 0 and 'API documentation' = 0 across the 192 presto.com pages; there is no docs./developer./api-docs host among the 78 certspotter names. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown, and it is code rather than documentation - which is the point. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. A published source map is not API reference documentation addressed to outside developers: there is no endpoint reference, no auth guide and no onboarding text in it, and dt.presto.com/docs, /openapi.json, /swagger.json, /v3/api-docs and /api-docs all return the same 945-byte SPA shell (a soft 200, measured against the site root). Re-probed this pass and unchanged: configuration-api.presto.com/openapi.json still serves the internal 18-operation FastAPI 'Configuration-API' spec anonymously (13,182 B, /docs renders Swagger UI, nonsense path 404s at 22 B), and it remains an internal per-restaurant settings service, not a developer portal. comm.presto.com serves an nginx welcome page, auth.presto.com 302s to presto.com and its robots.txt is 'User-agent: * Disallow: /'. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. Probed this pass and still not documentation: portal.voice.presto.com/docs, /openapi.json and /api-docs all return the same 1,373-byte SPA shell as the site root (soft 200, measured against the root). New hosts probed from the certificate-transparency list, all negative for anonymous specs: reporting.presto.com 503 on every path, analytics.presto.com an unrelated ThingsBoard-style shell (404 on /openapi.json, /docs, /asset-manifest.json), menu.presto.com an S3 MissingKey 403, api.go.presto.com "Missing Authentication Token" on every path, lens.presto.com an UnknownOperationException JSON 404, apis.presto.com no DNS, retrack/image-grid/vision-recall-grid/connect-tracks-grid 403, tacoma.presto.com an nginx welcome page. ALSO A CONTROL TRAP WORTH RECORDING: over the FY2023 10-K, /API/ matches 155 times and every one is the XBRL tag AdditionalPaidInCapitalMember - a case-insensitive "API" count on an SEC filing is meaningless. Retrieved 2026-09-18. || 327th: CLAIM: public, self-serve API reference documentation readable without a partner agreement, NDA or sales call. VERDICT: unknown (unchanged), but the DNS side of the search is now exhausted rather than sampled. 327th NEW BOUND - THE FIRST COMPLETE CERTIFICATE-TRANSPARENCY CENSUS OF presto.com. The 324th's crt.json on disk is an HTML 404 page, i.e. that enumeration never actually ran. This pass fetched https://crt.sh/?q=%25.presto.com&output=json (1,225,249 B) = 206 distinct non-wildcard names, and probed EVERY one of the 206 at its root with a browser-UA curl: 75 answer (200/301/302/403/404/503), 131 are NXDOMAIN. No developer-, docs-, api-docs-, readme- or partner-documentation host exists in the 206: partners.presto.com, api.presto.com, apis.presto.com, nextgen.presto.com, oms.presto.com, foh.presto.com, store.presto.com and touch.resources.presto.com are all NXDOMAIN; boh.presto.com answers only with a meta-refresh to /newui/auth/login which itself 404s; admin-poslink.presto.com and admin-poslink-staging.presto.com serve the stock Django 'The install worked successfully! Congratulations!' page (10,697 B, no app at all); menu.presto.com and every live.*/prelive.*/playground.* host 403. The ONLY anonymous reference documentation on any Presto host remains configuration-api.presto.com (/openapi.json 13,182 B, /docs, /redoc; nonsense path 404s at 22 B) - re-verified live 2026-09-18, still 18 internal restaurant-configuration operations with no securitySchemes and no onboarding text - which the record already judges is not documentation addressed to outside developers. Nothing left to enumerate on this axis. Retrieved 2026-09-18. || 331st: MERGE HOLD (proposed no/B, held unknown): 331st merge: configuration-api.presto.com serves anonymous FastAPI docs (18 operations). Atlas precedent treats an unlinked anonymous single-API spec as supporting `partial`, so a `no` on 'no public API documentation' would contradict that precedent; whether an internal auto-generated doc counts as published is not settled by a publication census. Held. PROPOSAL AS WRITTEN: 331st: VERDICT: no/B (was unknown/F). This is a DOCUMENTATION-SHAPED claim ('public, self-serve API reference documentation is readable'), which the 327th merge rule lets a publication census bound, and every Presto publication surface is now censused at zero: (1) presto.com: sitemap_index.xml -> page/post/video sitemaps = 192 URLs re-fetched 2026-09-18, IDENTICAL to the 192 the 324th fetched (comm diff empty); tokenised over those 192 pages (comments/scripts stripped): 'documentation'/'api reference'/'sandbox'/'swagger'/'openapi' 0; 'API' 4, all OpenAI's 'ChatGPT API' in one 2023 press release (POISON); 'developer' 3, vaccine developers / Presto's own early developers / ElevenLabs' customers (POISON); presto.com/developers and /api return the site 404 (45,165 B, identical to a nonsense path). (2) Presto's own support host support.elacarte.com ('Presto Support Center', Zendesk): /api/v2/help_center/en-us/articles.json re-fetched 2026-09-18 = {"count":0,"articles":[]} - zero public articles (any signed-in-only article would by definition not be public). (3) Host census: crt.sh %.presto.com = 206 names all probed by the 327th, plus the 331st sibling's certspotter re-run (only new name *.svc.int.staging.presto.com): no docs/developer/api-docs/partner-documentation host; partners.presto.com, api.presto.com, apis.presto.com NXDOMAIN. (4) SEC: the FY2023 10-K says integrations are built by Presto's own R&D ('restaurant systems integrations, including audio, POS and menu management'); 'API' 0 in the 10-K and 10-Q, 1 in the S-4/A (an IP-definition list, POISON); the only third-party developer program ever described is Presto Touch entertainment-app hosting under 'standard terms of service with third party developers' (abandoned line; no public docs referenced). THE ONE COUNTER-SURFACE, and why it is not the claim: configuration-api.presto.com serves anonymous FastAPI autodocs (/openapi.json 13,182 B re-verified 200 on 2026-09-18, /docs, /redoc; nonsense path 404 at 22 B) - 18 internal operations keyed on Presto's internal restaurant_code (e.g. 'PUT /v1/controlpanel/{restaurant_code}/voice Toggle Enabled Status', 'PUT /v1/overrides/{restaurant_code}'), no securitySchemes, no auth or onboarding text, and no link from any of the 192 pages or the support centre: an unlinked internal service's framework-generated schema, not reference documentation offered to an operator's developer. MERGE NOTE: if the merge reads that anonymous autodoc as 'readable reference documentation', the alternative is hold, not partial - it documents Presto-admin controls no outside developer can use. Retrieved 2026-09-18. adversarially verified

F
Unknown

API access is included in the base subscription at no additional per-location fee, surcharge, or upgraded plan requirement. differentiator

extensibility-api-access-cost

Not scored by this record.

Unknown

The vendor publishes its partner/marketplace commercial terms (referral fee, revenue share percentage, or per-location partner fee) in public documentation.

extensibility-partner-revshare

Not scored by this record.

Unknown

A free sandbox or test environment with seeded data is available to developers without owning a paid production account. differentiator

extensibility-free-sandbox

Not scored by this record.

Unknown

Third-party apps authenticate via OAuth 2.0 with scoped, operator-granted, individually revocable permissions (not shared static API keys or credential sharing).

extensibility-oauth-partner-apps

Examined 2026-08-04. Presto publishes no developer portal, API reference or partner-app framework of any kind: the site is nine marketing/legal pages (page-sitemap.xml), and docs./api./developer./developers.presto.com do not serve anything (most are NXDOMAIN; support.presto.com presents a wildcard *.wpengine.com certificate). Integrations with Oracle, PAR and Qu are described only as partnerships arranged by the company, with no auth model stated. Caution for later passes: 'Presto API Docs' at integration.presto.app, which documents a vendor API with webhooks, belongs to Presto App (presto.app, a food-delivery service, copyright 'Presto App', facebook.com/Prestoapp2020) — a different company, not Presto Automation — and must not be used as evidence here. || 324th: NEW: the OAuth that Presto ships is END-USER SSO for its own portal, not partner-application authorization. config.ts declares GOOGLE_CLIENT_ID and MENU_AUTH_API; pages/Auth/Auth0/auth0.ts and auth0-spa-js (src/Auth0Client.ts, src/jwt.ts) are bundled; the GraphQL Query type exposes login, mfLogin, verifyGAuthToken, authStatus and logOut. The authorization model is a CLOSED enumeration -- enum RolePermissions { PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, LIMITED, HITL } -- six human roles with no application/client/scope member (HITL is the human-in-the-loop agent role that was the subject of SEC order 33-11352). No client_id issuance, consent screen, scope list or partner app registry appears in the app or on the 192-page site. Held unknown rather than `no` because the corpus bounds one portal, not every Presto service. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW BOUND, cell still unknown: the second production Presto app repeats the Restaurant Portal's finding - authentication is end-user login for Presto's own staff, not partner-application authorization. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Its authorization model is the closed enum RolePermissions and the agent AuthContext/AuthProvider; there is no client_id issuance, consent screen, scope list or partner app registry: 'client_id' = 0 across the 362 first-party sources, and the 21 'scope' hits are JavaScript lexical scope (POISON). Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. The portal's auth is Auth0 END-USER login (pages/Auth/Auth0/Login.tsx, auth0.ts, Profile.tsx) plus a legacy email/password reset path, with authorisation expressed as the closed RolePermissions enum. POISON: client_id returns 8 hits and oauth 18, but every one is inside the bundled @auth0/auth0-spa-js library sources (Auth0Client.ts, cache-manager.ts, utils.ts), not Presto code - restricted to the 152 first-party files, client_id 0 and oauth 0. There is no partner-app registry, no consent screen and no scope catalogue in either production app. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; capability claim; the 327th merge rule: a capability `no` is not bounded by a public census when the vendor runs unpublished partner integrations - the FY2023 10-K says Presto's own R&D builds 'restaurant systems integrations, including audio, POS and menu management'). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'OAuth' 0/0/0; the only third-party app program described is Presto Touch entertainment apps under 'standard terms of service with third party developers' (abandoned line, no auth model stated). Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

The platform pushes real-time webhooks for order lifecycle events (created, modified, paid, voided, refunded) rather than requiring polling.

extensibility-webhooks-push

CLAIM: real-time webhooks for order lifecycle events. VERDICT: unknown (unchanged). NEW SURFACE: events.presto.com serves an anonymous FastAPI OpenAPI 3.0.2 spec (200, 6,263 bytes; a nonsense path returns 404 at 22 bytes, so it is not a catch-all; title "FastAPI" 0.1.0) listing 9 operations: GET /clients, GET /clients/{restaurant_code}, POST /local-setup/setup/websocket-connection/{restaurant_code}, POST /local-setup/send-event/{restaurant_code} ("Kafka Send Event"), GET /healthcheck, POST/GET/DELETE /v2/subscriptions ("Register Client Subscription"), POST /v1/event ("Post Event To Kafka"). The Subscription schema is {event_types, source_agent, restaurant_code, agent_id} and EventData carries session_id, lane_id, agent_type, agent_id, event, restaurant_code, ws_timestamp. This is an internal Kafka/WebSocket bus for Presto drive-thru agents: tokenised controls over the spec for callback 0, url 0, webhook 0, hmac 0, signature 0, so there is no subscriber endpoint URL and it is not an outbound webhook. /v2/subscriptions/x returns 401 anonymously. It neither shows nor excludes partner-facing webhooks, and the spec is not a census of Presto integrations (the Oracle/PAR/Qu order writes remain undocumented). Retrieved 2026-09-16. || 319th: VERDICT: unknown (unchanged). NEW: two more anonymous Presto service descriptions carry no outbound push: the staging portal GraphQL introspection (api.portal.staging.presto.com, 2026-09-16) has "subscriptionType":null and no webhook or callback type among its types; configuration-api.presto.com/openapi.json (18 operations) has no webhook, callback or subscription operation. Neither is a census of Presto's services (lens.presto.com GraphQL 401, api.go.presto.com 403), so no no is published. Retrieved 2026-09-16. || 324th: NEW: Presto's production GraphQL API, as generated into generated-interfaces/graphql.ts inside the Restaurant Portal's own source map, has NO Subscription type and no webhook, callback, event-subscription or endpoint-registration mutation; tokenised controls over the 152 app source files give 'webhook' = 0, 'callback url' = 0, and over the 192-page presto.com site 'webhook' = 0. It also has no order object at all -- the claim's subject (order created/modified/paid/voided/refunded) has no counterpart in the schema. Not scored `no`: this is one product API, and Presto runs other services (configuration-api.presto.com returns {"message":"Welcome to this location app."}, dt.presto.com is a separate "Presto Voice Terminal" SPA) that this corpus does not bound. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW BOUND, cell still unknown (this is a SECOND Presto app, after the Restaurant Portal, with no outbound push). SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Its generated-interfaces/graphql.ts declares no Subscription type and its enum list is closed - AgentEvents, AgentStatuses, CriticalChecksNames, Currency, END_SESSION_REASON, Intents, LoyaltyResponseStatus, MenuItemSettingKey, ModalityType, NonCriticalChecksNames, OrderStatus, OverrideKey, OverrideType, PropertyType, RestaurantAccountType, RolePermissions, SecondaryType, TaskStatuses, TransactionStatus, VISIBILITY_FACTOR - with no webhook, callback, endpoint-registration or event-subscription member. Tokenised: 'webhook' 0, 'callback url' 0 (the 325 'callback' hits are React callbacks). The push the app does use is INBOUND: a task-router WebSocket that delivers order/check/loyalty events to the agent ('websocket' 212). So Presto pushes events to its own terminal, not to partner endpoints; still not `no`, because this bounds one app. Retrieved 2026-09-17. || 326th: SURFACE (new this pass): https://portal.voice.presto.com, Presto's operator-facing Restaurant Portal, taken to a LOADER FIXPOINT that the 324th did not reach - that pass fetched the entry bundles but not the lazy route chunks' maps, and the route screens live in those chunks. Its /asset-manifest.json is closed and the webpack runtime's chunk-hash table is {3:"1734457e",4:"5784c87c",5:"df75ea45"}; all of runtime-main, main, 2, 3, 4 and 5 .js.map were fetched 2026-09-18 and every one is REAL (begins {"version":3, and carries sourcesContent), 2,279 mapped source entries, 152 unique first-party TypeScript/TSX files (2.3 MB). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 3,044-byte index.html shell instead. 1 round, 0 misses. Grade B (production code the vendor does not publish as documentation). The app ships a CLOSED ROUTES enumeration (constants routes.tsx) of every navigable page: Login / Profile / Reset Password, Home, Limited Access, Restaurant Settings (+ operation-hours, + tts-operation-hours), Menu Editor, Menu Export, Menu Ingestion, Menu Version, Item Availability, Account Management - each gated by the closed enum RolePermissions {PrestoAdmin, PrestoCustomerSupport, RestaurantManager, RestaurantStaff, Limited, Hitl}. This bounds Presto's BACK OFFICE only; the Voice Terminal (dt.presto.com) is the separately censused app, and neither is a POS. Over the 152 first-party files webhook 0, callback URL 0, subscription 0, and the portal's own generated GraphQL interface file declares no Subscription type. That is now BOTH production Presto web apps bounded with zero outbound push, on a route-complete census of the back office rather than its entry bundles alone. Still unknown rather than no: no census of Presto's server-side APIs exists. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; capability claim, unpublished partner integrations - same 327th merge rule). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'webhook' 0/0/0; the 10-K describes the order flow as Presto Voice pushing INTO the operator's POS and KDS ('populates the order in the restaurant's point of sale (POS) system and delivers the order to the restaurant's Kitchen Display System (KDS)'), the opposite direction from the claim. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Webhooks are cryptographically signed (e.g. HMAC) AND documented to retry with backoff, with a replayable event log for missed deliveries. differentiator

extensibility-webhook-reliability

Not scored by this record.

Unknown

A public write API accepts externally originated orders into the POS as first-class tickets that fire to KDS/printers and land in reporting.

extensibility-order-injection-api

Not scored by this record.

Unknown

Menu items, modifiers, and prices can be written and updated via API, not just read. differentiator

extensibility-menu-write-api

Not scored by this record.

Unknown

Every core object the API can read (orders, menu, customers, employees, inventory) can also be written or updated via the same API. differentiator

extensibility-data-symmetry

Not scored by this record.

Unknown

API rate limits are published as specific numeric quotas with documented throttling behavior and headers.

extensibility-published-rate-limits

Not scored by this record.

Unknown

The vendor is a named DoorDash Preferred Integration Partner (DPIP) under the 2026 program requirements. differentiator

extensibility-doordash-preferred

Not scored by this record.

Unknown

Direct, first-party certified integrations exist with DoorDash, Uber Eats, and Grubhub without requiring a paid middleware layer (Otter/Chowly/Deliverect/Checkmate). differentiator

extensibility-first-party-delivery-integrations

Not scored by this record.

Unknown

The POS is a supported endpoint for at least two major aggregation middleware platforms (Deliverect, Chowly, Otter, Checkmate, ItsaCheckmate).

extensibility-middleware-compatibility

Not scored by this record.

Unknown

Native, vendor-maintained connectors exist for QuickBooks Online and at least one other GL/accounting system, with mapped journal entries rather than CSV-only export.

extensibility-accounting-connectors

Not scored by this record.

Unknown

Labor hours export natively to at least two named payroll providers (e.g. Gusto, ADP, Paychex, Paylocity) without manual re-keying.

extensibility-payroll-export

Not scored by this record.

Unknown

Raw transaction-level data can be exported on a schedule to a customer-controlled destination (S3/SFTP/warehouse/Snowflake share), not only viewed in the vendor's reporting UI. differentiator

extensibility-bi-data-warehouse

Not scored by this record.

Unknown

The vendor operates a public integrations marketplace listing named third-party apps that operators can browse and self-install.

extensibility-app-marketplace

Not scored by this record.

Unknown

Operators can define custom fields or run vendor-hosted custom logic/scripts against POS objects without a vendor engineering engagement.

extensibility-custom-fields-scripting

Not scored by this record.

Unknown

The vendor supports a headless/embedded mode where a third-party UI (kiosk, web ordering, drive-thru) drives the POS transaction engine via API.

extensibility-headless-embedded

Not scored by this record.

Unknown

The vendor publishes an API changelog and a stated deprecation/notice policy for breaking changes.

extensibility-api-versioning-deprecation

Not scored by this record.

Unknown

A complete historical data export (orders, customers, menu, payments metadata) is available to the operator on demand, in a documented machine-readable format, at contract end. differentiator

extensibility-data-portability-exit

Not scored by this record.

Reliability, offline & operations

Unknown

Order entry, ticket routing, and check printing continue on-terminal when the internet connection is lost.

reliability-offline-order-entry

Nothing published settles whether order entry, ticket routing and check printing continued on-terminal during a WAN loss. The only affirmative offline claim in the 323-document corpus is on the withdrawn presto.com/pos page (Wayback 2021-04-20): 'Offline functionality. No internet, no Wi-Fi, no problem.', 'Never-Down Network / A system that doesn't stop working, even when Wi-Fi shuts off.', and an 'Offline transactions' row in its plan feature matrix. That page cannot carry this cell. It is uncorroborated - 'Presto POS' occurs in exactly 2 of the 323 corpus documents; its matrix is headed 'Feature Comparison Matrix Basic placeholder' with empty plan columns, misspells 'Puchase orders' and 'Preto Loyalty', and lists 'Nest cameras', 'Nest thermostat' and 'Pizza portioning' as features; its own footer describes the company as 'Our enterprise-grade touch, vision, and voice technologies', which does not include a POS; and the vendor's SEC filings covering the same period describe no POS product - the August 2022 S-4/A business section says 'We offer a range of Touch, Vision and Voice products.', lists 'POS products' among acquisition-target verticals, and recognises FY2021 and FY2020 revenue from the Touch and Voice products alone. The one corroborated offline mechanism Presto published is 'store & forward' on the archived pay-at-table (2020-04-22) and restaurant-tablet (2019-04-14) pages, and it is explicitly payment-only: 'allowing guests to pay even if the restaurant loses internet connectivity'. Payment is not order entry, ticket routing or check printing. Tokenised over all 323 documents: 'offline' 5 docs / 8 hits, 'no internet' 1, 'no wi-fi' 1, 'outage' 4 docs. Scope: Presto POS and Presto Touch, 2019-2021, both withdrawn; Presto Touch abandoned per the FY2024 Q3 10-Q and not retained in the January 2025 asset sale, which left Presto Phoenix, Inc. with the cloud Presto Voice platform alone. Bound: presto.com sitemap census (193 unique content URLs, re-derived 2026-09-06 with an independent href fixpoint), 90 archived retired pages, 32 archived help-centre articles, 8 SEC filings - the vendor's marketing and filing surface, NOT its product surface. dt.presto.com serves a live first-party 'Presto Voice Terminal' operator application this pass did not read. || 319th: VERDICT: unknown (unchanged). NEW SURFACE (crt.sh %.presto.com + %.elacarte.com, 228 names deduped, every name probed 2026-09-16): pos.presto.com and boh.presto.com are LIVE and resolve by CNAME to presto.web.upos.io / presto.upos.io -> prodalb.upos.io, the white-label platform of Linga POS (a separate atlas vendor, linga-pos). pos.presto.com serves an anonymous 6,697,332-byte Angular bundle (main.a78f1ddf8e0bbf50.js) whose white-label build config is themeColor:"whiteLabel", logo "assets/imgs/cloudpos/loginlogo.svg", and which calls mystore.lingapos.com, multi-sync.lingapos.com and staging-payment.lingapos.com; boh.presto.com redirects to /newui/auth/login. The token "presto" occurs 0 times in the bundle (the tenant is picked by hostname). This is the likely origin of the withdrawn 2021 presto.com/pos feature matrix: a Presto-branded Linga tenant. It does NOT carry this cell: the capabilities are Linga's product, both apps are login-walled, and nothing shows Presto sells or supports the tenant today (the scored product is Presto Voice). Do not score Presto from Linga docs. Retrieved 2026-09-16. || 320th: 320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: Same bound as order-capture-offline-order-entry: the 5 'offline' hits are CRA service-worker boilerplate. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. 'offline' = 0 and 'store and forward' = 0 across all 362 first-party sources, while the resilience the app does implement is network RETRY against the POS pipeline, not local operation: 'unlike 7002 ("Send Order is Pending", retryable once the in-flight transaction clears), 7008 means the POS already holds the FINAL order for this car'. Held unknown, not `no`, because the order of record is a third-party POS and this corpus bounds one app. Retrieved 2026-09-17. || 328th: VERDICT: unknown (held, not `no`: Presto ships no ticket routing and no check printing at all - 'kitchen' 0, 'KDS' 0, 'printer' 2 and both poison - so the claim's conjuncts do not apply). NEW, AND IT IS A FIRST-PARTY STATEMENT AGAINST INTEREST: this cell carried a note bound only to the 323-document marketing/SEC corpus and had never been grepped against the source maps. The production Voice Terminal's own shipped comment says durable offline persistence is NOT built: "a page RELOAD before this runs still loses queued sends. Surviving that needs IndexedDB and is explicitly deferred; revisit if telemetry shows real loss." 'IndexedDB' occurs exactly ONCE in the whole 12.6 MB and that is it; 'outbox' 0, 'store and forward' 0. What the terminal DOES persist to localStorage is enumerated and small: the auth token (AUTH_TOKEN_KEY), a versioned user state (USER_STATE_KEY / USER_STATE_VERSION_KEY) and the agent's panel-split heights - no cart, no order and no ticket. POISON WORTH PUBLISHING: 'offline' is not zero (9 / 5 / 2 / 9 hits) but every inspected hit is Create-React-App service-worker boilerplate ("Content is cached for offline use.", "No internet connection found. App is running in offline mode.") or Apollo InMemoryCache hydration prose - the SPA shell's own caching, never a POS offline mode. What Presto ships instead is WebSocket resilience for the live audio bus ('reconnect' 23, 'retry' 84, 'websocket' 81) and human takeover. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module: ticket routing and check printing belong to the operator's POS). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'offline' 2/1/0, all DDoS/outage risk-factor prose (POISON, per the 331st sibling); 'printer'/'printing' 4/0/0 are all merger 'printer fees' / 'printing expenses' (POISON). Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

Card payments can be accepted while offline via store-and-forward, not just cash-only fallback. differentiator

reliability-offline-card-auth

Not scored by this record.

Unknown

The vendor publicly documents who bears the loss when a store-and-forward transaction declines after connectivity returns, and states any per-transaction or cumulative offline cap. differentiator

reliability-offline-decline-liability

Not scored by this record.

Unknown

Multiple terminals continue to share a single check/table state over the local network while the internet is down (LAN-only degraded operation, not per-terminal islands). differentiator

reliability-lan-degraded-multi-terminal

Not scored by this record.

Unknown

The vendor documents a local/on-premise transaction engine or edge server (not purely cloud-hosted request/response) for the ordering path. differentiator

reliability-local-transaction-engine

Not scored by this record.

Unknown

Kitchen display and/or kitchen printer routing continues to function while offline.

reliability-offline-kds-printing

320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: No KDS or printing object in the schema or the portal. CONTROL POISON: 'print' returns 46 hits inside generated-interfaces/graphql.ts and every one is the graphql-tag helper `print(<Operation>Document)`, not ticket printing -- tokenise to 'printer'/'printing' and it falls to 0. The 9 'KDS' hits across the 192 site pages are blog and press-release prose about other vendors' kitchen systems; the single 'printer' hit is likewise blog prose. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Tokenised over the 362 first-party sources: 'printer' 0, 'kds' 0 (word-boundary), 'kitchen' 0; the 63 'print' hits are console/format helpers and the 15 'ticket' hits are Jira/PagerDuty tickets in comments (POISON). Presto's terminal ships no kitchen or printing surface at all - preparation happens on the restaurant's own POS/KDS once the check is created there. Held unknown, not `no`, per the lacks-entirely rule. Retrieved 2026-09-17. || 328th: VERDICT: unknown (held, not `no`: Presto ships no kitchen display and no kitchen printing at all, so the claim does not apply - merge policy holds rather than publishes `no`). NEW: this cell carried the 320th boilerplate shared by five cells and had never been grepped against any later corpus. the 328th re-grepped, per cell, EVERY Presto corpus already on disk and never individually checked against these cells: dt.presto.com Presto Voice Terminal first-party sources (362 sources, 2,412,777 B, .cache/q325, public source map, production); live.dt.presto.com main.js.map (4,335,583 B, production); portal.voice.presto.com Restaurant Portal (152 first-party TS/TSX files, 2,301,506 B, loader fixpoint, production); the 324th app/portal source dumps (2,422,032 B + 1,053,330 B); the staging portal GraphQL introspection SDL (132,119 B, ~230 generated types) and the 327th 48,894 B copy (STAGING - notes only, carries no verdict); configuration-api.presto.com/openapi.json (13,182 B). CONTROLS (tokenised, word-boundary, case-insensitive, all seven corpora, ~12.6 MB): 'kitchen' 0, 'KDS' 0, 'kitchen display' 0, 'expo' 0, 'makeline' 0, 'prep station' 0, 'store and forward' 0. POISON WORTH PUBLISHING: 'printer' is NOT zero - it returns 2 hits, and BOTH are poison: `node_modules/graphql/language/printer.mjs` (a library path in the source-map file list) and a CSS rule `'@media print': { // Save printer ink. }`. 'offline' returns 9 / 5 / 2 / 9 hits and every inspected one is Create-React-App service-worker boilerplate ("Content is cached for offline use.", "No internet connection found. App is running in offline mode.") or Apollo InMemoryCache hydration docs ("server side rendering, or offline storage") - i.e. the SPA shell's own caching, never a POS offline mode. 'receipt' returns 5 and all are "client receipt time" timestamps or a receipt ICON on the POS Cart card. Published counts for 'printer', 'offline' or 'receipt' would all have been FALSE. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module: the FY2023 10-K says Presto Voice 'delivers the order to the restaurant's Kitchen Display System (KDS)' - the KDS is the operator's, not Presto's). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'kitchen display'/'KDS' 0/3/0, all three in that one 10-K passage about the operator's KDS; 'printer' hits are merger printing fees (POISON). Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

The system automatically fails over to a backup printer or KDS station when a configured kitchen printer is unreachable, and alerts staff.

reliability-printer-fallback

320th: VERDICT: unknown (unchanged). LEAD RESOLVED: pos.presto.com (a Linga white-label) was a Presto-BRANDED LINGA DEALER TENANT, not a Presto-built product, and Linga's docs may NOT carry this cell. NEW EVIDENCE: the pos.presto.com bundle (main.a78f1ddf8e0bbf50.js) loads its branding before login from "${host}.upos.io/getDealerInfo". https://presto.upos.io/getDealerInfo answers anonymously (200, 892 bytes, application/json). A nonsense subdomain (zznonsense319.upos.io/getDealerInfo) returns 404 "Not Found", so it is not a catch-all. The response holds "name":"Presto POS", "isDealer":true, "zohoCode":"presto", "siteUrl":"https://upos.io/signup/plan_details?dealer=presto", "dealerSite":"https://support.upos.io/portal/en/home", "purchaseUrl":"shop.lingapos.com", "commission":1, a contact address at elacarte.com (E la Carte is Presto's legal predecessor), "dateCreated":"2021-02-11T21:02:32.55Z", "lastUpdated":"2021-04-23T15:08:04.934Z" and "activeStatus":true. CORROBORATION: the withdrawn presto.com/pos-integrations page (Wayback 2021) loads its partner logos from Linga's CDN (e.g. https://cdn.lingaros.com/2020/11/first-data-integration-1.png). So "Presto POS" was Linga resold under a Presto dealer brand around Feb-Apr 2021; the withdrawn /pos page was captured 2021-04-20. WHY LINGA DOCS CANNOT CARRY IT: (1) Presto does not sell it today. presto.com/pos and /pos-integrations return 404 (2026-09-16). The live page-sitemap lists 9 pages and none is a POS page. The only live "POS" on the homepage is "POS and headset providers allows us to install Presto Voice", i.e. POS systems as integration partners. (2) The dealer record has not been edited since 2021-04-23. (3) SEC filings for FY2020-FY2021 report no POS revenue, and the 2024 asset buyer kept only Presto Voice. (4) A reseller tenant inherits Linga's capabilities, which are already scored under data/vendors/linga-pos. Using support.lingaros.com here would score Linga twice and credit Presto Voice with a product it neither builds nor sells. At most it is grade-D historical context, below any publishable floor. Wayback CDX was offline again on 2026-09-16. Retrieved 2026-09-16. || 324th: NEW: Same bound: no printer, station or routing object exists. Presto Voice's own integration story is the opposite direction -- https://presto.com/voice-ai/ says it "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)", so ticket printing belongs to the operator's POS. NEW PRODUCTION SURFACE (the recorded dead-ends were pos.presto.com, a Linga dealer record, and api.portal.staging.presto.com, a STAGING host -- this one is neither): certspotter (api.certspotter.com/v1/issuances?domain=presto.com&include_subdomains=true; crt.sh 404s) returns 78 *.presto.com names. Probing the production ones found **https://portal.voice.presto.com -- "Presto Restaurant Portal", a live Create-React-App SPA that ships COMPLETE SOURCE MAPS**. Its /asset-manifest.json is a closed emitted-file census: runtime-main.a4694322.js plus chunks 2.5dc459af, 3.1734457e, 4.5784c87c, 5.df75ea45 and main.dbeab083, each with a .map, and the webpack runtime's chunk table {3:"1734457e",4:"5784c87c",5:"df75ea45"} names no other chunk -- 1 round, 0 misses. All five maps fetched 2026-09-17 and all are REAL (they begin {"version":3, and carry sourcesContent): 2,279 sources in total, of which 152 are Presto's own application files in main.chunk (1,023,914 bytes of TypeScript). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 1,373-byte index.html SPA shell with content-type text/html, byte-identical to the site root, so a 200 on a .map path is discriminating here. The map includes generated-interfaces/graphql.ts (127,884 bytes) -- the generated TypeScript for Presto's PRODUCTION GraphQL API: 235 types, 8 enums, a Query type of 31 fields (restaurants, restaurant, primaryRestaurant(s), menu, categories, menuItems, modifierGroups, menuItemSettings [deprecated], timePeriods, menuOverrides, timePeriodForCategories, queryCKEMenu, posPropertyMaps, posPropertyConflicts, posProperties [deprecated], posPropertiesByKeyValues, users, restaurantGroupsWithUsers, roles, restaurantGroups, restaurantAgents, userByEmail, restaurantsByUserRole, authStatus, login, mfLogin, verifyGAuthToken, logOut) and a Mutation type of ~60 fields, all of them menu / restaurant / user CRUD. **There is NO Subscription type.** The app's own route set is menu-editor (items, categories, modifier-groups, meal periods), menu-version (commit, promote, export, activity list), item-availability, user-management (users, restaurants, restaurant groups) and RestaurantSetting (operation hours, PrestoVoiceConfiguration, TTS schedules) -- there is no order screen, check, tender, drawer, timeclock, inventory, printer or KDS anywhere in it. This is corroborated by the vendor's current own site: https://presto.com/voice-ai/ (fetched 2026-09-17) -- "Presto Voice easily integrates into your existing drive-thru hardware and POS platform", and "seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)" -- i.e. Presto sits IN FRONT OF the operator's POS and is not one. SITE CENSUS ALSO REFRESHED: presto.com is WordPress (Rank Math) whose /wp-json is 403 but whose sitemap_index enumerates 192 URLs (page-sitemap lastmod 2026-09-01); all 192 fetched. TRAP IN THAT CORPUS: the tokenised counts 'payment' 207, 'loyalty' 81, 'inventory' 43, 'POS' 164 are almost entirely 2018-2022 blog posts written for the abandoned Presto Touch pay-at-table line, not the current product; 'webhook' = 0, 'clock-in' = 0, 'scheduled order' = 0, 'end-of-day' = 0, 'developer' = 0 across all 192 pages. NEW since the record was built (2026-08-01): /presto-launches-phone-ordering-business-unit-expanding-its-enterprise-grade-suite-of-voice-ai-for-qsrs/, /michael-chorey-founder-of-wendys-freshai-to-join-prestoas-co-founder-and-president-of-presto-iq/ (a new "Presto IQ" unit), /presto-and-elevenlabs-partner-to-bring-the-most-realisticvoice-ai-platform-to-restaurant-drive-thrus/ and /presto-adds-10m-to-accelerate-ai-leadership-for-enterprise-qsr-brands/. Held `unknown` and not `no` throughout, per the merge rule that a capability the product lacks ENTIRELY is a scope fact, not a scored absence, and because one portal's API is not a census of all of a vendor's APIs (configuration-api.presto.com, dt.presto.com / live.dt.presto.com "Presto Voice Terminal", comm.presto.com and auth.presto.com all answer separately). Retrieved 2026-09-17. || 325th: NEW SURFACE, cell still unknown: over the 362 first-party sources of the production Presto Voice Terminal 'printer' = 0 and 'kitchen' = 0, so no printer routing, failover target or reprint path exists in the product's own code. SURFACE (new this pass, never censused before - the 324th named dt.presto.com as a separate SPA it did not bound): https://dt.presto.com is the live production 'Presto Voice Terminal', a Create-React-App SPA with a CLOSED emitted-file manifest and COMPLETE PUBLIC SOURCE MAPS. /asset-manifest.json lists exactly two JS files (static/js/main.d5e0747c.js, static/js/845.0cdc4280.chunk.js) plus their .map siblings; both maps fetched 2026-09-17 and both are REAL (they begin {"version":3, and carry sourcesContent) at 10,796,537 B and 157,789 B - 1,378 sources, of which 362 are Presto's own TypeScript (2.41 MB, richly commented, with Jira ids HITL-1411/1499/1505 in the comments). SOFT-200 CONTROL PASSED: /static/js/zzz.NONSENSE.chunk.js.map returns the 945-byte index.html shell with content-type text/html. 1 round, 0 misses: the webpack runtime references no chunk the manifest omits. Grade B (production code the vendor does not publish as documentation), and it bounds THIS app only. Held unknown, not `no`, per the lacks-entirely rule. Retrieved 2026-09-17. || 328th: VERDICT: unknown (held, not `no`: no kitchen printer or KDS station exists in the product for anything to fail over to). NEW: this cell carried the 320th boilerplate shared by five cells and had never been grepped against any later corpus. the 328th re-grepped, per cell, EVERY Presto corpus already on disk and never individually checked against these cells: dt.presto.com Presto Voice Terminal first-party sources (362 sources, 2,412,777 B, .cache/q325, public source map, production); live.dt.presto.com main.js.map (4,335,583 B, production); portal.voice.presto.com Restaurant Portal (152 first-party TS/TSX files, 2,301,506 B, loader fixpoint, production); the 324th app/portal source dumps (2,422,032 B + 1,053,330 B); the staging portal GraphQL introspection SDL (132,119 B, ~230 generated types) and the 327th 48,894 B copy (STAGING - notes only, carries no verdict); configuration-api.presto.com/openapi.json (13,182 B). CONTROLS (tokenised, word-boundary, all seven corpora, ~12.6 MB): 'kitchen' 0, 'KDS' 0, 'kitchen display' 0, 'printer' 2 and both poison (graphql `printer.mjs` in the source-map file list; a CSS `'@media print'` rule commented "Save printer ink"). The staging Restaurant Portal's generated GraphQL SDL (~230 types, a CLOSED schema of the whole portal API: Menu, MenuItem, ModifierGroup, Category, TimePeriod, HoursOfOperation, Restaurant, RestaurantGroup, RestaurantSettings, RestaurantBranding, PosProperties, User/Role/UserProfile) contains NO printer, station, device, ticket-routing or fail-over type at all; it is STAGING, so it is recorded as corroboration only and carries no verdict. The one genuine fail-over Presto does ship is unrelated to printing: WebSocket reconnect on the Voice Terminal audio bus ('reconnect' 23 hits, 'retry' 84, 'websocket' 81) and human-in-the-loop takeover of the AI agent. Retrieved 2026-09-18. || 331st: 331st: VERDICT: unknown (held; no module: no kitchen printer or KDS station exists in any Presto product). Tokenised word-boundary controls, 331st, over the three SEC texts on disk (S-4/A amendment 4, 2022-08-10, 3,053,820 chars stripped; FY2023 10-K, 546,113; 2024 Q3 10-Q, 425,745; stripped by the 331st sibling pass .cache/q331/presto-automation/a, reused not refetched; counts given as S-4/A / 10-K / 10-Q): 'printer'/'printing' 4/0/0 all merger printer fees (POISON); 'kitchen display'/'KDS' hits are the operator's KDS. The SEC texts do state uptime SLAs with credits ('service level agreements with customers which warrant defined levels of uptime ... credits for prepaid amounts'), which bears on an SLA cell, not on printer failover. Corpora grepped for this cell before this pass (per its existing note): dt.presto.com Voice Terminal source map (362 sources), live.dt.presto.com main.js.map, portal.voice.presto.com Restaurant Portal (152 files), both GraphQL SDLs, configuration-api openapi.json, the 192-page presto.com corpus; this pass added the SEC texts. Retrieved 2026-09-18. adversarially verified

F
Unknown

The vendor documents its conflict-resolution behavior for edits made on two devices during a network partition (e.g. last-write-wins, merge, or operator prompt).

reliability-sync-conflict-handling

Not scored by this record.

Unknown

The vendor publishes an explicit list of which features are unavailable offline (gift cards, loyalty lookup, refunds, manual card entry, text-to-pay).

reliability-offline-feature-matrix

Not scored by this record.

Unknown

A public, per-component status page exists showing current and historical incident state without a login.

reliability-public-status-page

Not scored by this record.

Unknown

A contractual uptime SLA with a stated percentage AND a service credit remedy is published or available in the standard agreement. differentiator

reliability-contractual-uptime-sla

Not scored by this record.

Unknown

The vendor publishes written post-incident reports or root-cause summaries for major outages.

reliability-incident-postmortems

Not scored by this record.

Unknown

24/7/365 live human support by phone is included in the base subscription, not sold as a premium support tier.

reliability-247-live-support

Not scored by this record.

Unknown

The vendor offers in-person on-site installation and go-live support (first-party or certified dealer network), not remote-only self-install. differentiator

reliability-onsite-install

Not scored by this record.

Unknown

The vendor performs the initial menu build as part of onboarding rather than leaving it entirely to the operator. differentiator

reliability-menu-build-service

Not scored by this record.

Unknown

A hardware replacement/advance-exchange program with a stated turnaround time is included or purchasable.

reliability-hardware-replacement-sla

Not scored by this record.

Unknown

Operators can trigger and retrieve their own data backup/restore, or the vendor publishes RPO/RTO figures for data recovery.

reliability-backup-restore

Not scored by this record.

Unknown

The vendor publishes a current PCI DSS v4.0/4.0.1 Attestation of Compliance or equivalent (e.g. validated P2PE listing) covering the post-March-2025 future-dated requirements.

reliability-pci-dss-4-attestation

Not scored by this record.

Unknown

Multi-factor authentication is enforceable on back-office and POS administrative logins, with role-based permissions.

reliability-mfa-role-based-access

Not scored by this record.

Unknown

A public, free training library (video/LMS) and a practice/training mode on the terminal exist for staff onboarding.

reliability-self-serve-training

Not scored by this record.

Unknown

Any terminal can assume the master/server role automatically if the designated primary terminal or local server fails. differentiator

reliability-failover-terminal-role

Not scored by this record.

Unknown

Terminals support an automatic cellular/LTE failover for connectivity, first-party or documented.

reliability-cellular-backup

Not scored by this record.

Commercial, compliance & data ownership

Unknown

Vendor publicly offers a month-to-month subscription with no minimum multi-year term commitment for its core POS software tier. differentiator

commercial-month-to-month-contract

Not scored by this record.

Unknown

Vendor's published terms of service or MSA state no early termination fee / no liquidated damages for cancelling the software subscription before term end. differentiator

commercial-no-early-termination-fee

Not scored by this record.

No

The auto-renewal term and the required cancellation notice window (e.g. 30/60/90 days) are stated in publicly accessible contract terms rather than only in a signed quote.

commercial-autorenew-terms-published

The claim is about publication, which is directly verifiable. The only contract document Presto publishes is the site Terms of Use; I enumerated its 23 sections (Overview through Other Terms) and none addresses subscription term, auto-renewal, renewal length or a cancellation notice window — its termination language covers only Presto revoking website access. The complete published page set is nine pages (page-sitemap.xml): no MSA, subscription agreement or service terms exists, and pricing is quote-only (commercial-pricing-published already no). Renewal and notice terms are therefore available only in a signed contract. This is a finding about publication, not about what the signed contracts say. https://presto.com/terms-of-use/ · retrieved 2026-08-04

B
Unknown

The POS software can be purchased and operated with a third-party payment processor of the operator's choice (no mandatory in-house processing lock). differentiator

commercial-processing-not-bundled

Not scored by this record.

Unknown

Vendor publishes an interchange-plus (cost-plus) processing rate option with the markup stated as a specific bps + per-transaction figure, rather than only blended/flat card-present rates. differentiator

commercial-interchange-plus-published

Not scored by this record.

Unknown

The processing agreement caps or prohibits unilateral vendor-initiated rate increases outside of pass-through interchange/network changes, or grants penalty-free exit on any increase. differentiator

commercial-rate-increase-clause

Not scored by this record.

No

Per-location and per-additional-terminal software pricing is published as specific dollar figures on the vendor's public site (not 'contact sales' only).

commercial-pricing-published

No dollar figures anywhere; the site sells on ROI narrative and logos. https://presto.com/ · retrieved 2026-08-01

B
Unknown

Individual modules (online ordering, KDS, loyalty, inventory, payroll, marketing) can be purchased à la carte and cancelled independently without repricing the base POS subscription. differentiator

commercial-module-unbundling

Not scored by this record.

No

All required terminals, KDS screens, and printers can be purchased outright at a published price, with no mandatory multi-year hardware lease or rental.

commercial-hardware-purchase-outright

The claim requires purchase 'at a published price', and Presto publishes no prices at all: the voice-ai page describes hardware only as Presto Voice connecting to 'your existing systems (e.g., POS, confirmation board, drive-thru speaker)' and an install taking 'just a few hours', with no purchase, lease or price term anywhere; the nine-page sitemap contains no hardware or pricing page and every commercial path routes to the contact form. The published-price prong is verifiably unmet, which fails the claim as worded. Deliberately not asserted: whether the installed Presto equipment can be bought outright versus bundled into the subscription — that sits in the unpublished contract and remains unknowable from public material (the FY2023 10-K was unreadable; sec.gov returns 403). https://presto.com/voice-ai/ · retrieved 2026-08-04

C
Unknown

Vendor documents support for at least one non-proprietary/third-party hardware option (e.g. standard iPad, Epson/Star ESC/POS printers, generic cash drawer) rather than requiring vendor-only devices. differentiator

commercial-hardware-not-locked

Not scored by this record.

Unknown

One-time implementation, menu-build, onboarding, and training fees are published as specific amounts or explicitly stated as $0.

commercial-implementation-fee-published

Not scored by this record.

Unknown

Operators can self-serve export their full transactional history (orders, line items, payments, labor) to CSV or a documented API without contacting support or paying a fee.

commercial-data-export-self-serve

Not scored by this record.

Unknown

Guest/customer records, loyalty balances or point ledgers, and gift-card liability balances are exportable in machine-readable form by the operator. differentiator

commercial-export-customer-and-loyalty

Not scored by this record.

Unknown

Contract or documentation specifies a post-termination data retrieval window (a defined number of days during which the operator can still export their data) rather than immediate cutoff. differentiator

commercial-post-termination-export-window

Not scored by this record.

Unknown

Published terms explicitly state the merchant owns its transaction and customer data, and constrain the vendor's right to use or resell that data (beyond aggregated/de-identified use) for its own products or marketing. differentiator

commercial-data-ownership-clause

Not scored by this record.

Unknown

The POS is source-available or open source with a documented self-hosting option (source published under an OSI or source-available license, not merely an open API).

commercial-source-available-selfhost

Not scored by this record.

Unknown

Vendor documents validated P2PE or hardware-encrypted card entry plus tokenization such that the merchant's PCI scope is reduced to SAQ A / SAQ P2PE-HW, and names the applicable SAQ.

commercial-pci-p2pe-tokenization

Not scored by this record.

Unknown

Vendor documents PCI DSS v4.0.1 future-dated controls in effect since 31 Mar 2025 — notably MFA for all access to the cardholder data environment including POS and back-office logins, and (for hosted ordering pages) payment-page script integrity monitoring per Req 6.4.3/11.6.1.

commercial-pci-dss-4-controls

Not scored by this record.

Unknown

Vendor states it holds a current SOC 2 Type II (or ISO 27001) attestation and will provide the report under NDA via a trust center or on request.

commercial-soc2-attestation

Not scored by this record.

Unknown

Product provides in-app tooling for CCPA/CPRA and GDPR data-subject requests — locating, exporting, and deleting an individual guest's records — plus a published DPA the operator can execute.

commercial-privacy-dsar-tooling

Not scored by this record.

Unknown

Vendor publishes an accessibility conformance report (VPAT/ACR) claiming WCAG 2.1 AA (or later) for its self-order kiosk and consumer web-ordering surfaces, including a documented tactile/audio non-visual access mode on kiosks. differentiator

commercial-wcag-kiosk-accessibility

Not scored by this record.

Unknown

POS supports card-network-compliant dual pricing / cash discount or surcharging with automatic exclusion of debit and prepaid cards from any surcharge, and required receipt and menu-board disclosure of the fee. differentiator

commercial-dual-pricing-compliant

Not scored by this record.

Adversarial verification

An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 25 values — 9 upheld, 12 downgraded, 4 upgraded. It separately resolved 9 previously unknown values. This is published in full because a reader who can see which values were contested, on what evidence, and which way they moved has something no affiliate-funded comparison offers.

Capability claims

ClaimAs first scoredVerdictWhat the verifier found
commercial-autorenew-terms-publishedunknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examinedresolve-to-noClaim sweep of a never-examined cell. The claim asks whether the renewal term and cancellation notice window are stated in publicly accessible contract terms, which is verifiable by exhausting what the vendor publishes. presto.com's page-sitemap.xml lists the entire site as nine pages, of which the legal set is Privacy Policy, Terms of Use and Data Privacy. I read the Terms of Use section list in full — 23 sections from Overview to Other Terms — and it governs website use only: no subscription term, auto-renewal, renewal length, cancellation notice or termination-fee language exists, and the sole termination section covers Presto revoking site access at its discretion. No MSA or service agreement is linked anywhere. Consistent with the resolve-to-no precedents on Zonal, Restroworks, Qu and Maitre'D: the publication the claim requires verifiably does not exist, which is not a finding about what the signed contracts contain. source
commercial-hardware-purchase-outrightunknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examinedresolve-to-noClaim sweep of a never-examined cell. The claim conjoins outright purchase with 'at a published price', and the published-price limb fails on positive evidence: Presto publishes no prices anywhere (the record already carries commercial-pricing-published = no at grade B), the nine-page sitemap has no pricing or hardware page, and the voice-ai page's only hardware content is that Presto Voice 'seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)' and 'installs in just a few hours' — no model, price, purchase or lease term. The note deliberately does not assert that hardware must be leased; whether the Presto-installed equipment can be bought outright lives in the unpublished contract. The FY2023 10-K (which describes platform fees due on execution plus monthly over the contract term) could not be read first-hand — sec.gov returned HTTP 403 to fetch — so nothing from it is scored. source
digital-menu-single-sourceunknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examinedresolve-to-partialClaim sweep of a never-examined cell. Presto is not the POS; the voice-ai page claims its voice channel menu derives from the partner POS (Oracle, PAR, Qu) via Menu Unification, which 'streamlines the disparate QSR restaurant menu data into a structured and centralized data format', with 'Efficient Menu Updates' and 'Streamlined Menu Deployment' as named features — corroborated by the 2025-02-06 Menu Unification launch release. Scored partial at C, not yes, with two named shortfalls: Presto's only first-party digital channel is the voice agent (it ships no web/app ordering, the claim's actual subject), and nothing published states a POS item edit propagates without the named deployment step. No admin documentation exists to settle either (nine-page page sitemap, marketing-only blog archive, doc subdomains dead). source
multi-location-central-menu-publishunknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examinedresolve-to-partialClaim sweep of a never-examined cell. First-party feature-page claim of author-once, deploy-to-many for the voice channel: 'Brand-Level Menu Management' 'allowing simultaneous management of multiple restaurant locations and menus rather than adjusting individual locations' plus 'Streamlined Menu Deployment' (voice-ai page, echoed in the 2025-02-06 launch release). Partial at C rather than yes because (1) it governs Presto's voice-channel menu overlay, not the corporate menu of record in the locations' POS, and (2) the claim's publish/version history requirement (what, when, by whom) is evidenced nowhere — no admin documentation exists anywhere the vendor publishes. source
hardware-os-platformsunknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examinedresolve-to-noClaim sweep of a never-examined cell. The claim asks whether vendor documentation names supported client operating systems with minimum versions and device specs — a publication claim, verifiable by exhausting the published surface, matching the resolve-to-no precedent on commercial-autorenew-terms-published. sitemap_index.xml yields the complete surface: nine pages (page sitemap — none hardware/spec/docs), 184 marketing/press posts (slugs grepped for hardware/OS/spec/guide terms, only marketing matches), and a video sitemap. The voice-ai page's entire hardware content is 'seamlessly connects with your existing systems (e.g., POS, confirmation board, drive-thru speaker)' and 'installs in just a few hours'. docs./help./support./api./developer./kb.presto.com re-probed 2026-08-04 — NXDOMAIN or TLS failure on all; dt.presto.com is an unauthenticated app shell with no content. The documentation the claim requires verifiably does not exist; nothing is asserted about what OS the installed equipment runs. source
order-capture-split-mergeno / F - Voice order-capture front end only; not a POS."upgrade-to-partialRe-derived every element. Verified the 10-K quote verbatim and read 350 chars of surrounding context (Item 1, Presto Touch product description). Read the full help-centre split article and confirmed both modes and the 'do not pre-split on the POS' instruction. Re-derived 'Presto POS' with a negative lookahead: 2 docs of 323, confirming the coordinator's correction of their own count of three (the third was the substring 'Presto Posts'). Re-derived 'recipe' (2 docs), 'ingredient' (1 doc) etc. to test how much of this page is corroborated - almost none. CHANGED the analyst's note: it used the /pos feature-matrix rows ('Split by seat', 'Merge check', 'Merge table', 'Transfer check') as if they established capability. Under my ruling on that page (see AUDIT-SUMMARY) a bare matrix row moves no cell in either direction, so those elements are now recorded as NOT established. Value partial and grade A are upheld - the 10-K sentence and the help-centre article carry the cell without the /pos page. source
order-capture-offline-order-entryno / F - Cloud voice AI; requires connectivity."downgrade-to-unknownVALUE CHANGED: partial (grade C) -> unknown (grade F). The analyst rested the whole cell on the /pos page. I verified the quote is genuine and the page is genuinely Presto's, then tested whether it is evidence about a product: re-derived 'Presto POS' = 2/323 docs with a negative lookahead; read the page in full and confirmed the 'Basic placeholder' matrix header, the empty plan columns, the misspellings and the Nest thermostat rows; read the /pos-integrations companion and found its catalogue is Nest IoT, Opera/Micros Fidelio hotel PMS, PayFast South Africa, Optomany UK and Evertec LATAM - the integration list of a generic white-label multi-country cloud POS, not of the company whose customers are Applebee's and Chili's; and confirmed in the S-4/A that the business section covering FY2020-FY2022 enumerates Touch/Vision/Voice and names 'POS products' as an acquisition target. I also checked the analyst's fallback: the store-and-forward citations are real and verbatim but are payment-only, so they do not corroborate order entry. Re-derived 'offline' = 5 docs / 8 hits (analyst's figure reproduces).
payments-emv-nfcno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upgrade-to-partialUPHELD the value; RE-CITED and UPGRADED the grade from C to B/A. The analyst cited only the archived marketing page (grade C) while quoting grade-A corroboration inside the note - under-graded, which is the failure mode the marketing-page-overgrading rule warns about in reverse. I moved the citation to the FY2023 10-K sentence, verified verbatim, and read its surrounding context to confirm it describes Presto Touch and not a partner's terminal. Verified both archived NFC/Apple Pay sentences verbatim in their corpus documents. Checked 'wallet' (11 docs / 16 hits) and confirmed no hit describes a stored card in a guest profile. Confirmed Google Pay is absent. Value partial stands. source
payments-gift-cardsno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD the value; CHANGED the citation from the January 2025 sale press release to the 2021 /pos-integrations page. The press release establishes only the scope of today's product; it says nothing about gift cards, so it was carrying an inference rather than a fact. The Factor 4 / Givex attribution is an affirmative first-party statement that stored value was a partner function - a much better basis for a `no`. Verified the quote verbatim and read the whole integrations page. Re-derived 'gift' (6/14) and 'stored value' (1) - both analyst figures reproduce. Independently re-derived the sitemap census (184 post + 9 page + 9 video = 193 unique after dedup, all three children fetched fresh 2026-09-06) and ran my own 20-page, 3-round href fixpoint, which found exactly one novel content path, a duplicate slug - the coordinator's census premise reproduces. Added the dt.presto.com limitation to the published note. Grade C is correct: the citation is a vendor marketing page. source
payments-refund-void-controlsno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD the value; CHANGED the citation from the January 2025 press release (grade C, which carried only a scope inference) to the archived operator refund article, and RAISED the grade to B accordingly - an operator help-centre article is the right instrument for a workflow-control claim. Read the article in full and verified the quote verbatim. Re-derived every published count: 'audit trail' 0, 'override' 0, 'no-sale' 0, 'cash drawer' 0, 'drawer' 0, 'void' 4 docs / 15 hits - all the analyst's figures reproduce. Confirmed the 10-K boundary sentence verbatim and in context. Added the dt.presto.com limitation, which is the strongest reason this row is `no` at med rather than high confidence. source
kitchen-station-routingno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD, value and grade B unchanged. Read the cited article in full and verified the quote verbatim; it is short and unambiguous and its whole body is the quoted answer. Verified the 10-K corroborating sentence verbatim and in its Item 1 'Our Solutions' context. Re-derived 'Presto KDS' (1 doc, the /pos page), 'kitchen printing' (1 doc, the same page), 'KDS' (12 docs / 17 hits), 'station' (8 docs / 10 hits). Tightened the published note to name both products and both periods explicitly, as the standing rule requires, and to add the /pos uncorroboration and dt.presto.com disclosures. Confidence lowered from the analyst's implicit level to med because the cited article is eleven years old and describes the tablet, so the weight is really carried jointly with the 10-K sentence. source
kitchen-expo-consolidationno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD, value and grade unchanged. Verified the 10-K quote verbatim and read it in the Item 1 'Our Solutions / Presto Voice' context to confirm the possessive is the restaurant's. Re-derived every published count: 'expo' 0, 'heat lamp' 0, 'prep station' 0, 'bump' 0, 'station' 8 docs / 10 hits, 'KDS' 12 docs / 17 hits - all reproduce. REMOVED one control from the published note: the analyst published 'expedit' as a zero-hit, but ctl.mjs is word-boundary by default, so a stem with a trailing boundary can never match 'expedite' - a control that cannot fail is not a control. Tokenised properly, 'expedite' has 14 hits in 11 documents, all the business verb. Added the /pos uncorroboration and dt.presto.com disclosures. source
kitchen-bump-bar-hardwareno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD, value and grade B unchanged - and the analyst's grade choice of B rather than A is right here, because the cited grade-A sentence carries only the integration point while the documented-models half of the claim rests on the corpus bound, which is grade B. Verified the quote verbatim and in context. Re-derived 'bump' = 0 docs, 'prep station' = 0, 'heat lamp' = 0, 'Presto KDS' = 1 doc (the /pos page). Read the /pos add-on module table in full and confirmed the $29.99/mo price line is a bare name with no description. Added the /pos uncorroboration and dt.presto.com disclosures. source
reliability-offline-order-entryno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownVALUE CHANGED: partial (grade C) -> unknown (grade F). Same ruling as order-capture-offline-order-entry, applied identically. I verified the /pos quotes verbatim, read the page in full, and established that the page is uncorroborated and contradicted by the vendor's own registration statement for the same period. I then checked the analyst's independent leg - the store-and-forward citations - verified them verbatim on two separate archived pages, and confirmed they cover payment only, which is precisely the half of this claim that is NOT asked for. Re-derived 'offline' 5/8, 'no internet' 1, 'no wi-fi' 1, 'outage' 4 - the analyst's figures reproduce. I considered keeping `partial` on the strength of the marketing slogan alone and rejected it: `partial` would tell a reader that a Presto terminal partly kept selling in an outage, and no document in the corpus supports that about any product the vendor's filings name.
reliability-offline-kds-printingno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD - this row was already the right answer and it is the model the other offline rows should have followed. Re-derived every published count and all reproduce: KDS 12/17, 'kitchen display' 7/8, 'kitchen printer' 0, 'kitchen printing' 1, offline 5/8, 'no internet' 1, 'no wi-fi' 1, outage 4, connectivity 8, degraded 0, 'store and forward' 1, printer 9/21. Verified the help-centre routing quote verbatim by reading the whole article. Added the dt.presto.com disclosure and the explicit statement that the corpus bound covers marketing and filings, not the product surface.
reliability-printer-fallbackno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD. Re-derived every published count and all reproduce: failover 0, 'fail over' 0, 'kitchen printer' 0, 'revenue center' 0, redundant 3, backup 3. Confirmed by listing the 32 archived help-centre documents that the two printer articles are the only printer documentation in the corpus and that both are short stubs. Added the dt.presto.com disclosure and the marketing-versus-product-surface distinction to the published rationale.
delivery-driver-rosterno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD the value; REWROTE the reasoning. The analyst reached `unknown` by treating the 'Presto Driver' module name as a datum that 'kills the no but cannot make a yes'. Under my ruling on that page a bare name in a price table headed 'Basic placeholder' moves no cell in either direction, so the value is now unknown for the primary reason - the absence is not bounded to any manifest that covers the product surface - with the module name recorded as context rather than as evidence. Re-derived every count: 'dispatch' 0, 'clock-in' 0, 'run history' 0, 'delivery driver' 0, 'in-house delivery' 0, 'batching' 0, 'courier' 1 doc / 10 hits, 'Presto Driver' 1 doc. All reproduce. Read the full add-on module table and confirmed the $44.99/mo price line.
delivery-dispatch-boardno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownVALUE CHANGED: no (grade C) -> unknown (grade F). The analyst's own reasoning shows why: the Ottonomy release is an announcement about a partner's robot and an explicit evaluation, so it is affirmative about nothing relevant, and the rest of the row is a set of zero counts bounded to a corpus that the coordinator has since confirmed does not cover the vendor's product surface. I re-derived every count ('dispatch' 0, 'batching' 0, 'run history' 0, 'delivery driver' 0, 'in-house delivery' 0) and independently re-derived the sitemap census and the href fixpoint - the census premise itself holds, but it bounds the marketing site, not the product. I also applied the consistency test the analysts failed: delivery-driver-roster and delivery-dispatch-board rest on symmetric evidence (a bare module name on the placeholder page, plus zero counts) and were scored differently by two analysts. They are now both unknown. The line I hold across this record is that a `no` survives only where an affirmative published sentence assigns the function to a third party or to the customer's own system; this row has no such sentence.
digital-first-party-webno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upgrade-to-partialUPHELD, value and grade unchanged. Verified the quote verbatim in the live corpus document. Re-derived 'web ordering' 0 and 'own website' 0. Confirmed in the S-4/A that 'online ordering' appears in the acquisition-target vertical list, verbatim ('verticals such as customer relationship management and loyalty, POS products, front of house management, online ordering, AI tools, and integration middleware'), which is the strongest single argument against a `yes` here and also, independently, against treating the /pos page as a shipped Presto product. Confirmed the 'Contactless Website' help-centre article exists in the archived corpus as a title-level datum only. Added the bound and dt.presto.com disclosures. Confidence low: the citation is a marketing post and two of the three rubric elements are unestablished rather than established-as-partial. source
digital-account-saved-paymentno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownVALUE CHANGED: partial (grade C) -> unknown (grade F). The analyst filed this at low confidence and the reasons they gave defeat their own value. Their citation - 'Optionally, they also have access to their loyalty rewards and prior customizations.' - describes access to a loyalty account, and the same FY2023 10-K sentences that this session uses to score both loyalty cells `no` say loyalty is a third party's. If the loyalty engine is a partner's, the account and the order history are the partner's too, so the number of rubric elements established as PRESTO'S is zero, not one. Saved payment - the element the cell is named for - has no evidence at all. I re-derived every count: 'card on file' 0, 'tokenized' 0, 'create an account' 0, 'guest account' 0, 'saved' 9 docs / 9 hits, 'wallet' 11 docs / 16 hits. All reproduce. `unknown` at F, not `no`, because nothing published establishes the capability is absent either.
guest-loyalty-accrual-modelsno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD the value; GRADE DOWNGRADED A -> B. Grade A is the top of the ladder and the analyst claimed it for an ABSENCE inferred from a roadmap sentence and a risk factor. The cited sentences are genuinely grade-A and affirmative, and they do establish that loyalty is a partner function - but converting that into 'Presto ships no accrual model' additionally needs the corpus bound, which is grade B, and the coordinator's late finding that a live first-party terminal handles loyalty codes shows the bound does not reach the product surface. B is the honest grade. Verified both 10-K quotes verbatim and in context, and verified the S-4/A acquisition-vertical sentence verbatim. Re-derived 'punch' 0, 'points per dollar' 0, 'loyalty' 68 docs / 125 hits. Added the dt.presto.com limitation to the published note, as instructed. source
guest-loyalty-lifecycle-automationno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD the value; GRADE DOWNGRADED A -> B, for the same reason as the sibling accrual row: grade A was being claimed for an absence, and the affirmative grade-A sentence carries only the third-party-loyalty point while the no-campaign-layer conclusion rests on the corpus bound at grade B. Verified the quote verbatim and in its risk-factor context. Re-derived 'win-back' 0, 'winback' 0, 'lapsed' 1, 'birthday' 6 docs / 10 hits - the analyst published 'birthday' as 10 hits without a document count; the document count is 6. CORRECTED a fabrication risk the analyst introduced: their note quoted 'Is a guest's birthday coming up? Send them a birthday note' as if from the corpus, and that sentence appears in NO corpus document. I read every one of the 10 birthday hits and replaced it with the sentence that is actually there. Their substantive characterisation survives - none of the 10 hits is a Presto feature. Verified the /wearables quote exists in the corpus. Added the dt.presto.com limitation to the published note, as instructed. source
labor-clock-in-at-posno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownVALUE CHANGED: partial (grade C) -> unknown (grade F). Two independent reasons, either sufficient. First, even taken at face value the analyst's citation does not say what the cell asks: 'Monitor and control management of shifts, time schedules, and time off' is scheduling, not clock-in, and the analyst themselves conceded the PIN/badge/card mechanism 'is nowhere documented' - which means no rubric element was actually established. Second, my ruling on the /pos page: a bare matrix row moves no cell, and an affirmative prose sentence on that page cannot alone make a `partial` because the page is uncorroborated and the publisher's own registration statement for the same period enumerates a product line that does not contain it. I verified the quote verbatim, read the page in full, and re-derived 'time clock' 1 doc, 'timeclock' 1 doc, 'clock-in' 0, 'clock in' 1 doc. The uncited `no` this replaces is equally unsupportable, which is why the answer is unknown rather than no.
inventory-recipe-bom-costingno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownVALUE CHANGED: partial (grade C) -> unknown (grade F). This is the row where the /pos page's isolation is starkest, and measuring it is what settled my ruling: I tokenised 'ingredient' across the whole corpus and it returns ONE document - the page itself. There is no second document in 323 that says Presto ever costed an ingredient. The analyst's `partial` also leaned on the bare matrix row 'Recipe / sub recipe' to supply the multi-level half of the claim, which is exactly the move I disallow. I verified both quotes verbatim, read the page and its companion integrations page in full, and confirmed in the S-4/A that the business section covering this exact period enumerates Touch/Vision/Voice and names 'POS products' as an acquisition target. Re-derived 'recipe' 2 docs / 3 hits, 'sub recipe' 1 doc, 'ingredient' 1 doc / 2 hits, 'food cost' 2 docs / 3 hits.
inventory-unit-conversion-yieldsno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD the value and grade. REMOVED the url and quote: the analyst emitted this unknown with a citation to the /pos page, which under the output contract and under my ruling is wrong twice over - an unknown at grade F carries a rationale, not a citation, and that page's matrix is not a source that can be cited for anything. I also strengthened the analyst's own hedge: they called the matrix 'a FLOOR, not a ceiling', which concedes it too much. A list headed 'placeholder', with empty plan columns and a thermostat among its rows, on a page the publisher's own registration statement contradicts, is neither. Re-derived every count: 'unit of measure' 0, 'ounce' 0, 'cycle count' 0, 'variance' 0, 'depletion' 0. All reproduce. Added the dt.presto.com disclosure.
inventory-count-modesno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD the value and grade. REMOVED the url and quote for the same reason as the sibling inventory row - the output contract puts a rationale and no citation on an unknown at grade F, and the analyst had cited 'Take advantage of bulk ordering discounts with inventory IQ.' from the /pos page, which is a marketing slogan supporting nothing. Re-derived every count: 'cycle count' 0, 'variance' 0, 'physical inventory' 1 doc. All reproduce, and I confirmed the single 'physical inventory' hit is in the S-4/A in an accounting sense. Added the dt.presto.com disclosure and hardened the analyst's 'floor' framing, which conceded the placeholder matrix more standing than it has.
reporting-eod-closeoutno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."downgrade-to-unknownUPHELD the value and grade. REMOVED the url and quote per the output contract. Re-derived every published count: 'end of day' 0, 'closeout' 0, 'z report' 0, 'cash drawer' 0, 'drawer' 0, 'net sales' 0, 'shift report' 0, 'sales summary' 0, 'till' 1 doc, 'close out' 1 doc. All ten reproduce exactly - this was the most carefully measured of the four analyst rows. Read the /pos Reporting & Analytics section and its matrix rows in full to confirm the analyst's characterisation. Added the dt.presto.com disclosure.
hardware-offline-modeno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upgrade-to-partialUPHELD the value; CHANGED the citation from the /pos page to the archived pay-at-table page, and correspondingly rewrote the note. The analyst led with the uncorroborated /pos slogan and treated store-and-forward as a secondary corroboration; the order is backwards, because store-and-forward is the only leg that survives my ruling on the /pos page - it is twice-published, names a mechanism, and attaches to Presto Touch, a product the 10-K and the S-4/A both describe. Verified both store-and-forward sentences verbatim in their two separate corpus documents, and verified the /pos offline quotes verbatim. Re-derived 'offline' 5/8, 'degraded' 0, 'no internet' 1, 'no wi-fi' 1. I deliberately did NOT collapse this row to unknown as I did the two order-entry offline rows: those ask specifically about order entry, which store-and-forward explicitly does not cover, whereas this cell asks about offline operation of the hardware, which store-and-forward does partly answer. That split is the consistent application of my ruling, not an exception to it. source
hardware-kdsno / F - Migrated from the 2026-08-01 research pass; no source URL was recorded."upheldUPHELD the value; GRADE DOWNGRADED A -> B. The cited sentence is genuinely grade-A and genuinely affirmative, and it settles that for Presto Voice the KDS is the customer's. But the claim is 'sells OR supports a dedicated KDS as a first-party product', and the 10-K nowhere says Presto sells no KDS - closing that half needs the corpus bound, which is grade B. Three analysts cited this same 10-K sentence at two different grades (A for this row, B for kitchen-expo-consolidation and kitchen-bump-bar-hardware); B is right for all three and they are now consistent. Verified the quote verbatim and in its Item 1 'Our Solutions / Presto Voice' context. Verified the 2014 routing article quote verbatim. Re-derived 'Presto KDS' = 1 doc and read the add-on module price table in full. I agree with the coordinator that the dt.presto.com strings 'Order Rejected by POS' and 'POS reported an error for the last order' corroborate this reading - Presto is the writer into someone else's POS - and I have said so in the note without citing that surface. source
menu-pricing-nested-modifiersunknown, grade Fresolve-to-partialChecked the saved bundle by node indexOf. (1) modifierGroupsQuery field list verbatim (x4). (2) hl=function(...) returns {item,quantity,constraints:Vp(e,t,o),added_by}; Vp reduces e.childModifierGroups through kp; kp reduces e.selectedItems through hl -- mutual recursion confirmed. (3) Controls: isForced/Forced/mandatory/Mandatory/is_required/min_selections 0; 'forced' x3 all axios forcedJSONParsing; 'isRequired' x2 PropTypes; 'Required' x9 = SVG attr, PropTypes, hasRequiredCommands (slash commands) and the AUTOFILL log, where 'required group' is derived from minimumSelections>0 (also qq/ny/Object filter minimumSelections>0). Shortfall (1) stands and is now evidenced. (4) Partial kept, not yes: no explicit forced flag (taxonomy conjunct), no demonstrated 3-level menu; not unknown because A-grade code proves per-level min/max and unbounded nesting. Flipdish's yes/A rests on a published schema; Presto is a consumer console. (5) Peers: flipdish yes/A, olo/cake/otter partial-yes B; chownow bundle-cited cells are A. (6) Verbatim test: every backticked/quoted bundle string present EXCEPT 'Presto Voice Terminal' (0 in bundle; it is the live index.html <title>) -- re-attributed. 'selectedItems.length < minimumSelections' was a paraphrase (code: y.length<v with y built from t.selectedItems, v=t.minimumSelections) -- de-codified. Constraints payload shape corrected to include args/added_by. Softened shortfall (3): 'Presto is not where the nested menu is authored' was unevidenced; min/max come from Presto's brandMenuConstraints layer carrying Presto-only prompt/upsell/conditions fields, so authorship is unestablished, not negative. Added 'Get Menu Items From Restaurant Portal Failed' (x1 verbatim). source
multi-location-org-hierarchyunknown, grade Fresolve-to-partialVerbatim test over main.5bb1bc35.js and the three lazy chunks: the role strings (1 each), allowed* keys (2 each), 'Allowed brands/franchises/restaurants' (1 each), view:report (11), view:restaurant-dashboard (2) and CreateRestaurantGroups (2) are all verbatim in main. 'Ownership Type' (1), 'Franchisee Group' (1) and 'All Franchises' (8) are verbatim in the dashboard chunk. Four backticked strings were NOT verbatim: `GetBrandChains($brands)` (0; the real signature is `$brands: [String]`), `GetChainRestaurants($chains, $brands)` (0), `name restaurantCode` (0; the fields are on separate lines) and `brand name restaurants` (0; same). The proposer also wrote that GetBrandChains 'returns chains' when it returns name/restaurantCode. The 'role enum maps ... to user type customer' mapping was not shown, so it is reworded to 'lists'. The unverifiable Wayback 2025-01-25 provenance is dropped. 'Restaurant Group'/'Parent Account' were dropped because they are restaurant-detail display fields, not hierarchy evidence. POISON: 'Brand' 96 and 'Restaurants' 97 in main are substring noise, so the filter labels are cited from the dash chunk. Tokenised 'region' in main is region 104, signingRegion 22, aws_*_region and 2 aria role=region, with zero org regions. 'franchis' in main is 19 tokens, all user-scope or enum. Counter-evidence: allowed* are never consumed outside the form. The brand API (module 9880) filters e.brand===o.rI.WIENERSCHNITZEL, and module 3474 defines rI={WIENERSCHNITZEL:'Wienerschnitzel'}. The API base (module 1794) is the constant https://api-staging.presto.com/iq/v1. portal.voice.presto.com has flat userManagement.restaurantGroups with attachedUsers and 0 brand/franchise tokens (only 'branding'). Partial rather than yes: permission scoping at three tiers is evidenced client-side, but reporting across tiers exists only in a single-brand staging pilot. Partial rather than reject: a three-tier role enum, three scope arrays and a brand>chain>restaurant GraphQL model are first-party code. Calibration: peers are 23 partial/B, 3 partial/A, 14 yes/B; 7shifts and Adyen partial/B carry similar 'middle tier scoping not documented' shortfalls. Grade A follows the dt.presto.com bundle precedent on this record. source
reporting-realtime-dashboardunknown, grade FupheldProposed partial from the live public app.presto.com Presto One bundle (283rd session); rejected on verification: Verbatim strings mostly hold. In the dashboard chunk: 'Total Sales' 3, both tooltips 2 each, total_net_sales/total_check_count/avg_check_size 8 each, refreshFrequency:'15 min' 3, {value:'live',label:'LIVE'} 1, 'Auto-syncing...' 1, 'Last updated' 1, mobile-ownership-section and mobile-franchise-section 1 each. In main (not the chunk): view:customer-dashboard 2, and the REACT_APP_DASHBOARD_API_URL staging URL and wss://ws-staging-iq.presto.com 3 each. The feature is still not shown to be shipped to customers. (a) The staging host is not only an env var: module 1794 hard-codes JR='https://api-staging.presto.com/iq/v1' as the base of every endpoint (BRANDS, DASHBOARD_FETCH, DASHBOARD_FETCH_RANGE, GALARDI_FETCH, GALARDI_PRE_POST_SUMMARY, UPSELL_FETCH_RANGE), in a build whose REACT_APP_ENV is 'main' and whose Unleash token is 'production'. (b) The brand loader (module 9880) returns only rows with brand===WIENERSCHNITZEL (module 3474). Main hard-codes three galardi_loc_* restaurants, the chunk calls GALARDI_* endpoints, and it embeds a hard-coded Galardi A/B pre/post table ('AB DID vs Controls' +4.4pp, 'AB Revenue/Day' $400 -> $460). This is one customer's pilot (Galardi Group / Wienerschnitzel) on staging, not an evidenced product feature. POISON: active:!1 on the route is NOT a disable flag. All 4 launcher modules carry it (Configuration, Voice Analytics, Voice Session, Customer Dashboard) and the only active:!0 is an unrelated archetype payload, so it cannot be used for or against. REACT_APP_DISABLE_* has 6 distinct flags (OIDC false; CLOUDWATCH, API_DOC, RKI, INVITEUSER, SUPERVISOR_DASHBOARD true), none for the customer dashboard. No Unleash isEnabled flag name refers to the dashboard. The proposer's '$4.2K'/'v4.2.1' hard-coded tiles are a MISREADING: they sit in the Nr/Cr catalogue arrays used only by memo components (displayName PerformanceOverviewSection and the channel-mix card) that are never assigned, i.e. dead code, while the rendered Total Sales/Transactions/Avg Check cards read h.dataMetrics. Tokenised 'live' in main is mostly voice_live_date/pat_live_date/liveRestaurants (deployment go-live), and in the chunk it is isLive 9 / live 6 / LIVE 4. 'refresh' in main is auth-token refresh; the chunk polls every DATA_REFRESH 12e4 ms (2 min, module 3474) and labels tiles '15 min'. Even taken at face value, the claim's conjunct 'accessible from a mobile app' is unmet (responsive web only), and the within-minutes freshness of POS sales is asserted by a label, not evidenced. With the only instance being a single-brand staging pilot, a partial would read a pilot as capability. The cell stays unknown/F; the pilot evidence should be recorded in the rationale, not cited. source
multi-location-price-zonesunknown, grade Fresolve-to-partialValue and grade upheld; note amended. VERBATIM (grep -F counts over .cache/q283-presto/src): the MenuOverride shape is exact at graphql.ts:473-484 (it also carries availableOverride, now added). The OverrideType/SecondaryType/OverrideKey/ModalityType enum values are exact. 'Override the default price here' appears 2 times (MenuItemDetail.tsx:694-695); 'Enter price override for this modifier group here' and '... category here' once each (DragItemList.tsx:122-124). `RestaurantGroup = { id groupName restaurants }` is exact (graphql.ts:611). `/menu/copy` (webserviceAPI.ts:461) and `applicable_restaurants` (2) are exact. TimePeriod fields are exact (graphql.ts:526-534). FIXED: (a) '152 first-party TypeScript files' was wrong: the map has 152 sources, all with content, but only 148 are .ts/.tsx (64 ts + 84 tsx; the rest are 1 jpg, 1 png, 2 svg). (b) 'Search location to export to' is a template label ending '(Max ${MAX_SELECTIONS} selections)' in pages/menuVersion/MenuExport.tsx, not the menu editor. (c) The UI render labels are 'Dine In' / 'To-go' / 'Delivery', not 'Dine-in / To-go / Delivery price inputs'; now quoted exactly. RECOUNT: 623 .ts/.tsx/.js/.jsx confirmed (portal 148 + dt 345 + live.dt 130), 0 under node_modules. CONTROLS, word-boundary: priceLevel 0, priceZone 0, priceTier 0, priceList 0, daypart/dayPart 0. The price token census (top: price 180, Price 32, getMenuItemPrice 29, priceOverride 19, basePrice 16, toGoPriceOverride 6, deliveryPriceOverride 6, dineInPrice 4) is all per-item, per-modality or cart math; no group or period key. POISON: `brandMenu` is 490 substring hits but 106 exact tokens, all in dt.presto.com. It is the Presto 'unified menu' (menuUnification.ts), which filters `unavailable_entities` and `business_rules` by `restaurant_group`, and `primaryRestaurantCode` (141 exact tokens) is a mirroring lookup key ('in mirroring scenarios the selected code differs from the code in restaurant_groups'), not a price tier. The type definition `types/brandMenu` is imported by 25 files but absent from the map (a type-only file elided by the compiler), so the proposer's unbounded 'no location-group price tier' was a corpus hole. I rebounded it to the Portal and flagged the brand menu as unobserved. The partial stands because the verified conjunct (per-channel price on one item row) is real and the other two conjuncts are not shown. Per-modality override READ: MenuItemDetail.tsx:255-300 reads the modality overrides from the item's own override array, and live.dt utils/menu.ts:481-482 applies the secondaryType override, then the modality override, then the base price, so there is no duplication. Grade A, same as the first-party bundle precedent (verdicts-A). Peers: olo partial/D on channel-only pricing; chownow partial on channel markup. Consistent. source
labor-granular-rbacunknown, grade Fresolve-to-partialThe proposed `no` is contradicted by positive evidence, so I amended it to partial. The proposer read only the Portal's fixed RolePermissions ladder and dismissed Presto One as 'named view:* permissions ... screen visibility'. A full census of the app.presto.com bundle finds 16 permission strings, not just view:*. Four are write/create grants: write:configuration (6 hits, gating release-configuration editing), write:force-escalation (1, gating a force-escalation action on a live session), write:report (1, 'Manage Tableau Viz'), create:users (1, User management). The bundle also ships a per-user permission editor: the GraphQL documents GetAuth0Permissions, GetAuth0RolePermissions, UpdateAuth0UserRoles and UpdateAuth0UserPermissions($userId, $permissions: [String]!), with the handler toasting 'Permissions updated successfully!'. That is per-action grants per user, not fixed tiers, and the claim explicitly names 'report access', which view:report / view:report-external / write:report cover. The allowedRestaurants scoping (verdicts-A) supplies location. The `no` claim 'No type in the schema carries a per-action permission list' is true only of the Portal schema. VERBATIM, Portal side: the RolePermissions enum is exact (graphql.ts:602-609). Role, RestaurantGroupRole, UserRestaurantsRole and CreateRestaurantGroupRoleInput are exact (588-600, 651-655, 1289-1292). hasRoleAccess has 22 hits: definitions in portal/dt/live.dt utils/restaurants.ts, and every call site is a rank comparison. canVoid/canComp/canRefund = 0 (word-boundary, 623 files, a count I confirmed). POISON: `permission` is 156 substring hits but 48 exact tokens (RolePermissions, RolePermissionsGraphQlMapping); HITL's 762 hits are overwhelmingly the dt console's human-in-the-loop agent vocabulary, not the role; and the Presto One `permissions` field also appears on TableauRoutes rows (a per-report visibility list), which is not a user grant. PEER CALIBRATION: soundhound-restaurant-ai no/B (four fixed console tiers, POS actions not performed); acrelec no/C (no admin role model); chownow no/A (fixed 9-entry permission vocabulary and no route that edits it). Deliverect partial/B is the closer peer: an editable per-permission portal model whose permissions govern the portal, not POS actions. Presto One matches deliverect (an editable per-user permission list, one named claim action covered), not chownow, so partial. I did not reject to unknown because the grant mechanism is observed directly in first-party source code (grade A). Whether Auth0 roles are also customisable server-side is not visible, which does not affect the partial. source

Sources

Every URL this record cites. 20 in total.