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
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
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.
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
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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
Payments & money movement
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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
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
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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
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.
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.
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.
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.
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.
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
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.
Captures per-channel marketing consent with timestamp and source of consent, and honors revocation received by any reasonable means (not just the STOP keyword) across all channels.
guest-loyalty-consent-management
Not scored by this record.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Reporting, BI & data access
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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
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
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.
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.
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.
API rate limits are published as specific numeric quotas with documented throttling behavior and headers.
extensibility-published-rate-limits
Not scored by this record.
The vendor is a named DoorDash Preferred Integration Partner (DPIP) under the 2026 program requirements. differentiator
extensibility-doordash-preferred
Not scored by this record.
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.
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.
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.
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.
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.
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.
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.
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.
The vendor publishes an API changelog and a stated deprecation/notice policy for breaking changes.
extensibility-api-versioning-deprecation
Not scored by this record.
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
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
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.
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.
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.
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.
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
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
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.
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.
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.
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.
The vendor publishes written post-incident reports or root-cause summaries for major outages.
reliability-incident-postmortems
Not scored by this record.
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.
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.
A hardware replacement/advance-exchange program with a stated turnaround time is included or purchasable.
reliability-hardware-replacement-sla
Not scored by this record.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
| Claim | As first scored | Verdict | What the verifier found |
|---|---|---|---|
| commercial-autorenew-terms-published | unknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examined | resolve-to-no | Claim 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-outright | unknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examined | resolve-to-no | Claim 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-source | unknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examined | resolve-to-partial | Claim 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-publish | unknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examined | resolve-to-partial | Claim 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-platforms | unknown, grade F — placeholder "No public documentation located during the 2026-08-01 research pass", meaning the cell was never examined | resolve-to-no | Claim 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-merge | no / F - Voice order-capture front end only; not a POS." | upgrade-to-partial | Re-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-entry | no / F - Cloud voice AI; requires connectivity." | downgrade-to-unknown | VALUE 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-nfc | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upgrade-to-partial | UPHELD 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-cards | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD 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-controls | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD 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-routing | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD, 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-consolidation | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD, 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-hardware | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD, 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-entry | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | VALUE 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-printing | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD - 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-fallback | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD. 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-roster | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD 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-board | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | VALUE 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-web | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upgrade-to-partial | UPHELD, 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-payment | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | VALUE 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-models | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD 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-automation | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD 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-pos | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | VALUE 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-costing | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | VALUE 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-yields | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD 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-modes | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD 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-closeout | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | downgrade-to-unknown | UPHELD 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-mode | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upgrade-to-partial | UPHELD 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-kds | no / F - Migrated from the 2026-08-01 research pass; no source URL was recorded." | upheld | UPHELD 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-modifiers | unknown, grade F | resolve-to-partial | Checked 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-hierarchy | unknown, grade F | resolve-to-partial | Verbatim 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-dashboard | unknown, grade F | upheld | Proposed 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-zones | unknown, grade F | resolve-to-partial | Value 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-rbac | unknown, grade F | resolve-to-partial | The 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.
- https://presto.com/
- https://presto.com/terms-of-use/
- https://presto.com/voice-ai/
- https://presto.com/page-sitemap.xml
- https://presto.com/sitemap_index.xml
- https://presto.com/answering-the-call-voice-ai-phone-ordering-optimizes-qsr-operations/
- https://presto.com/presto-launches-industry-first-menu-unification-product/
- https://dt.presto.com/
- https://data.sec.gov/submissions/CIK0001822145.json
- https://www.sec.gov/Archives/edgar/data/1822145/000155837023016336/prst-20230630x10k.htm
- https://www.sec.gov/Archives/edgar/data/1822145/000155837024008505/prst-20240331x10q.htm
- https://www.sec.gov/Archives/edgar/data/1822145/000121390022046085/fs42022a4_ventouxccmacq.htm
- https://www.sec.gov/files/litigation/admin/2025/33-11352.pdf
- https://web.archive.org/web/20210420011738id_/https://presto.com/pos
- https://web.archive.org/web/20210622112856id_/https://presto.com/pos-integrations
- https://support.elacarte.com/api/v2/help_center/en-us/articles.json?per_page=100
- https://dt.presto.com/static/js/main.327f7955.js
- https://app.presto.com/static/js/main.5bb1bc35.js
- https://app.presto.com/static/js/dashboard.27ba50e4.chunk.js
- https://portal.voice.presto.com/static/js/main.dbeab083.chunk.js.map