01 - Competitive analysis (Phase 3.1)aso/01_competitors.md · raw .md

01 - Competitive analysis (Phase 3.1)

Produced: 2026-08-04. Subject: the app repository at pinned commit 03a176e72ef0075eec86b8915cbe6e93042a3b9d, version 0.4.12+18.

Throughout this document the product name is written as the substitutable token {NAME}. The current working name is a placeholder pending trademark clearance (research/_raw_03_store_name_search.md establishes that the bare name is already taken on the Apple App Store), so nothing here depends on which name is finally registered.

ASO = app store optimisation, the practice of choosing store metadata so the store's own search ranks the listing. KDS = kitchen display system, a screen that shows incoming order tickets to the kitchen. IAP = in-app purchase. Prep table = the refrigerated bench in a fast-food kitchen holding portioned ingredients, each with its own hold-time.


0. What was captured, and how

Quantity Value
Distinct competing apps analysed 32
Store listings captured (some apps ship on both stores) 36 (20 Apple App Store, 16 Google Play)
Customer reviews mined, full text 1,267 (1,062 Apple, 205 Google Play)
Apple reviews rated 1-3 stars (the strict complaint cut) 358
New capture files written for this stream 460 (346 data files, 114 screenshots)
Physical-timer and professional-vendor price captures 10

Index of every file with source URL, retrieval time, HTTP status and byte count: proof/03_market/captures/MANIFEST_aso.md.

Method, stated so it can be audited. Every store page, Play search-results page and Play autocomplete interaction was rendered in Playwright's headless Chromium through utilities/chrome.py - never WebFetch, never requests.get(), because store pages are single-page applications that return an empty shell to a plain HTTP client. Two Apple endpoints are JSON web services rather than pages: itunes.apple.com/lookup and itunes.apple.com/search make Chromium start a file download instead of rendering (verbatim error: Page.goto: Download is starting), so those two are fetched over plain HTTP and every capture header stamps that fact. Apple's customer-review RSS feed and Apple's search-hints endpoint both render in Chromium and went through it. No paid ASO platform was used and none is claimed; every figure below traces to a file under proof/03_market/captures/.


1. Tier 1 - Consumer multi-timer apps (what a chef reaches for today)

1.1 Apple App Store

Ratings and rating counts are the storefront-specific values; an app's US and French numbers differ because Apple counts them per storefront. Prices are formattedPrice from the lookup web service. "Subtitle" is the 30-character line under the app name, read off the rendered product page.

App (US name) Developer Price Rating / count (US) Rating / count (FR) Last update Category Subtitle (US) Capture
Timer+ Countdown & Stopwatch Minima Software LLC Free 4.75 / 40,666 4.67 / 1,312 2026-07-29 Utilities Interval, Workouts, Pomodoro aso_itunes_lookup_timerplus_minima_{us,fr}.json, aso_appstore_product_timerplus_minima_us.txt
MultiTimer: Multiple timers PERSAPPS (PERSEPS), TOO Free + IAP 4.74 / 15,568 4.71 / 516 2026-07-02 Utilities Visual countdown seconds timer aso_itunes_lookup_multitimer_persapps_{us,fr}.json, aso_appstore_product_multitimer_persapps_us.txt
Interval Timer - Tabata Timer NEO PIXEL LABS PTE. LTD Free 4.50 / 19,000 4.56 / 1,468 2025-11-04 Health & Fitness Multiple timers for fitness aso_itunes_lookup_interval_timer_tabata_{us,fr}.json
Flip Timer & stopwatch 俐 马 Free 4.57 / 7,572 4.41 / 230 2026-05-12 Productivity Use for fitness,workout,study aso_itunes_lookup_flip_timer_{us,fr}.json
Timer & stopwatch - Timeglass COSMIC TEAPOT PTY. LTD. Free 4.69 / 1,445 4.29 / 7 2020-07-02 Utilities Repeat & multiple step timing aso_itunes_lookup_timeglass_{us,fr}.json
1Timer - Voice Timer Diffuse Thinking LLC Free 4.74 / 1,176 4.38 / 61 2024-08-02 Utilities Countdown, workout, trading … aso_itunes_lookup_onetimer_voice_{us,fr}.json
Timer ٞ Unicom TOV Free 4.40 / 1,147 4.21 / 80 2025-07-31 Utilities Kitchen cooking alarm aso_itunes_lookup_timer_unicom_{us,fr}.json
Sous Chef - Cook Tools & Timer Michael Chu Free 4.54 / 338 5.00 / 1 2026-04-02 Food & Drink Recipe & Ingredient Calculator aso_itunes_lookup_sous_chef_michael_chu_{us,fr}.json
Kitchen Timer - Simple Cooking Focaccia, Inc. Free 4.58 / 185 not sold in FR 2026-04-07 Utilities Custom patterns & colors. aso_itunes_lookup_kitchen_timer_simple_focaccia_us.json
MultipleTimers+ EIICHI KOMINE Free 4.66 / 140 not sold in FR 2026-02-16 Productivity Runs simultaneously aso_itunes_lookup_multipletimers_plus_komine_us.json
Timer-Kitchen timer&Stopwatch woodsmall inc. Free 4.45 / 82 4.40 / 10 2026-05-06 Utilities Kitchen timer & Stopwatch aso_itunes_lookup_timer_kitchen_woodsmall_{us,fr}.json
MultiTimer: Stopwatch + Timer DigitAlchemy LLC Free 4.78 / 77 4.73 / 37 2026-07-28 Utilities Multiple timers & countdown aso_itunes_lookup_multitimer_digitalchemy_{us,fr}.json
Thyme - A Modern Kitchen Timer Thuy Gia Nguyen Free 3.04 / 73 3.00 / 3 2019-10-31 Food & Drink (category line only) aso_itunes_lookup_thyme_modern_kitchen_timer_{us,fr}.json
About Timers - Kitchen Timer Gertjan.com Free 4.49 / 59 0 / 0 2026-04-08 Utilities Multiple Timers & Stopwatch aso_itunes_lookup_about_timers_gertjan_{us,fr}.json
Kitchen Multi Timer Bunnybun Studios Ltd Free 4.83 / 6 0 / 0 2023-06-21 Utilities Run simultaneous timers aso_itunes_lookup_kitchen_multi_timer_bunnybun_{us,fr}.json
Kitchen Timer+ Voice Control Springboard Inc. Free 1.00 / 1 5.00 / 1 2026-06-01 Food & Drink Colorful, background alerts aso_itunes_lookup_kitchen_timer_voice_springboard_{us,fr}.json
Kitchen Timer Erich Tropeano Free 5.00 / 1 0 / 0 2025-12-12 Utilities Multi-timer for restaurants aso_itunes_lookup_kitchen_timer_erich_{us,fr}.json

French names are separate metadata, not translations of the English: Timer+ Countdown & Stopwatch ships in France as Minuteur+ Chrono et Minuteries, Timer ٞ as Minuteur ٞ with the subtitle Alarme De Cuisine, 1Timer - Voice Timer as 1Timer - Minuteur vocal with the subtitle Annonce le temps restant, Kitchen Multi Timer as Minuterie multiple, Kitchen Timer+ Voice Control as Minuteur de cuisine+, MultiTimer: Stopwatch + Timer as Chronomètre et Minuteur Plus, and Timer-Kitchen timer&Stopwatch as Minuteur - Chronomètre with the subtitle Cuisine Minuteur & Chronomètre (captures aso_appstore_product_*_fr.txt). That every serious competitor pays for a distinct French title is itself the evidence that a French listing is worth writing properly.

1.2 Google Play

Play publishes a download band, which Apple does not. Ratings differ between the en/US and fr/FR renders of the same listing because Play localises the aggregate.

App (en/US title) Developer Monetisation Rating (US) Reviews Downloads Last update French title Capture
Multi Timer StopWatch LemonClip Ads + IAP 4.2 62.2K 1M+ 2026-08-03 Multi Timer StopWatch aso_play_detail_multi_timer_stopwatch_lemonclip_{en_US,fr_FR}.txt
Visual Timer - Countdown Humane Digital none shown 4.6 24.7K 1M+ 2026-03-08 Visual Timer- Compte à rebours aso_play_detail_visual_timer_cwiesner_{en_US,fr_FR}.txt
Multi Timer: Timer + Stopwatch Digitalchemy, LLC Ads + IAP 4.7 23.9K 1M+ 2026-07-30 Chronomètre et Minuteur Sport aso_play_detail_timer_plus_digitalchemy_{en_US,fr_FR}.txt
Kitchen Multi-Timer Maxim Kabluka Ads + IAP 4.5 22.1K 1M+ 2026-03-29 Multi-Minuteur de Cuisine aso_play_detail_kitchen_timer_maxxt_{en_US,fr_FR}.txt
MultiTimer: Multiple timers Persapps IAP 4.5 4.23K 100K+ 2026-06-24 MultiTimer: Multiple timers aso_play_detail_multitimer_persapps_{en_US,fr_FR}.txt
Kitchen Timer UT app Ads + IAP 4.5 3.02K 500K+ 2026-06-24 Kitchen Timer aso_play_detail_kitchen_timer_utapp_{en_US,fr_FR}.txt
Complex Timer deslomator none shown 4.5 694 50K+ 2025-03-25 Complex Timer aso_play_detail_complex_timer_deslomator_{en_US,fr_FR}.txt
Kitchen Timer (Multiple Alarm) EONSOFT Ads 3.3 216 10K+ 2026-07-29 minuterie de cuisine aso_play_detail_multitimer_eonsoft_{en_US,fr_FR}.txt
Kitchen Multi Timer Bunnybun Studios Ltd IAP 4.0 119 10K+ 2022-09-29 Kitchen Multi Timer aso_play_detail_kitchen_multi_timer_bunnybun_{en_US,fr_FR}.txt
Cooking Timer JP Duplessis none shown 4.8 (not shown) 1K+ 2025-07-12 Cooking Timer aso_play_detail_cooking_timer_vteam_{en_US,fr_FR}.txt
Multi Kitchen Timer DOLVEX Ads (none yet) (none yet) 100+ 2026-05-27 Multi-Minuteur de Cuisine aso_play_detail_kitchen_multitimer_dolvex_{en_US,fr_FR}.txt
The Green Kitchen Timer DUIZABO none shown (none yet) (none yet) 10+ 2026-06-22 LE MINUTEUR VERT en Cuisine aso_play_detail_le_minuteur_vert_{en_US,fr_FR}.txt

The shape of the consumer tier. Four apps have crossed one million Android installs. Every one of those four monetises through advertising, in-app purchase, or both, except Visual Timer - Countdown. Not one of the 29 consumer listings is a paid up-front purchase. The tier is free, ad-funded, phone-shaped and aimed at a home cook, a student or a gym user; several of the top performers are not kitchen apps at all (Interval Timer - Tabata Timer is filed under Health & Fitness, Multi Timer: Timer + Stopwatch ships in France as Chronomètre et Minuteur **Sport**).


2. Tier 2 - Professional and commercial kitchen tools

This tier is real but thin, and it splits into two things that are often confused. A prep timer tracks hold-times on a prep table. A KDS routes order tickets to a screen. Neither is a cook-line multi-timer board, which is the gap the product occupies.

Product Vendor Store / channel Price Rating / reviews Downloads Last update Capture
Antunes Prep Timer v2.0 A.J. Antunes & Co. Google Play Free (companion to hardware) 3.9 (count not shown) 100+ 2025-09-02 aso_play_detail_antunes_prep_timer_en_US.txt
Antunes Prep Timer v2.0 A.J. Antunes & Co. Apple App Store Free 5.00 / 1 n/a 2026-05-27 aso_itunes_lookup_antunes_prep_timer_v2_us.json
Antunes Prep Timer (v1) A.J. Antunes & Co. Apple App Store Free 5.00 / 2 n/a 2021-12-06 aso_itunes_lookup_antunes_prep_timer_us.json
McDonalds Prep Timer A.J. Antunes & Co. Google Play Free + IAP 3.9 / 44 5K+ 2023-09-14 aso_play_detail_mcdonalds_prep_timer_en_US.txt
Fresh KDS - Kitchen Display Fresh Technology Google Play Free app, paid service 3.2 / 121 10K+ 2026-07-18 aso_play_detail_fresh_kds_en_US.txt
Loyverse KDS - Kitchen Display Loyverse Google Play Free app, paid service 3.8 / 262 100K+ 2026-03-02 aso_play_detail_loyverse_kds_en_US.txt
Square KDS Block, Inc. Vendor site $20/month per device with Square Premium, $30/month per device with Square Plus n/a n/a n/a aso_kds_squarekds_pricing.txt
Kitchen Station Timers (US) / Chrono Cuisine (FR) Simge Ceylan Akyuz Apple App Store $2.99 / 2,99 € 0 / 0 n/a 2026-07-21 aso_itunes_lookup_chrono_cuisine_{us,fr}.json

Three observations that matter for positioning, each with its evidence.

The professional tier is a hardware accessory, not a software product. Antunes' own listing says so: "Antunes Prep Timer designed to manage Prep Table Timers. User can easily manage condiments & expiry… App has two modes - Operator & Store manager mode" and, in the same block, "Note: This app is designed for iPad" (aso_play_detail_antunes_prep_timer_en_US.txt). It exists to drive Antunes kitchen equipment. Its Play install band is 100+. The mass-market McDonald's variant reaches 5K+ installs - the entire installed base of the most widely deployed professional prep-timer app in the world is smaller than a single week of installs for a free consumer timer.

A paying operator's complaint is abandonment, not features. From the McDonald's Prep Timer review dialog (aso_play_reviews_mcdonalds_prep_timer.txt), 2022-10-03: "App needs updates like menu updates we shouldn't have to keep adding new products we pay for the app so I would expect them to keep up with menu. App hasn't been updated in over 2 years". The listing's last update is 2023-09-14, three years before this audit. Fresh KDS, 2019-08-05: "Customer service is next to zero and we've been stranded without a ticket printing system while running a busy restaurant. It fails constantly" (aso_play_reviews_fresh_kds.txt).

Someone has already tried the exact positioning, twice, and it is not defended. Kitchen Timer by Erich Tropeano carries the App Store subtitle "Multi-timer for restaurants" and has one rating (aso_itunes_lookup_kitchen_timer_erich_us.json). Chrono Cuisine ships in the US as Kitchen Station Timers with the subtitle "Multi Timer Cookline" at $2.99, updated 2026-07-21, with zero ratings in both storefronts (aso_appstore_product_chrono_cuisine_{us,fr}.txt). The niche is identified but unoccupied.


3. Tier 3 - The real incumbent: a physical timer, a sticker, and a shout

A software product that ignores its analogue competitor produces useless positioning, so this tier is priced from professional catering suppliers rather than asserted.

Product Supplier Price Buyer rating Capture
Minuteur magnétique Nisbets Essentials (code DF672) Nisbets France (professional catering supply) 3,39 € excl. VAT 4.5 from 49 reviews aso_hw_nisbets_fr_search_minuteur.txt
Minuteur Buffalo (code AD986) Nisbets France 3,19 € excl. VAT 5.0 from 1 review same
Minuteur aimanté Hygiplas (code DP028) Nisbets France 4,99 € excl. VAT, reduced from 8,49 € 3.7 from 31 reviews same
Minuteur grands chiffres Hygiplas (code CF916) Nisbets France 13,89 € excl. VAT, reduced from 17,69 € 4.7 from 20 reviews same
Minuteur triple Hygiplas (code CF915) Nisbets France 18,79 € excl. VAT, reduced from 24,49 € 4.1 from 19 reviews same
Kitchen timers, whole category Nisbets UK £9.99 / £19.99 / £29.99 across the range - aso_hw_nisbets_uk_search_timer.txt
Timers, whole category Taylor USA (Taylor Precision Products) $8.99 to $19.99 - aso_hw_taylor_search_timer.txt
Minuteurs, consumer/pro crossover cuisineaddict.com (France) 4,45 € to 87,90 € - aso_hw_cuisineaddict_minuteur.txt

Nisbets France returns 36 results for "minuteur" and its own price facet counts them: 9 products between 0 € and 10 €, 4 between 10 € and 20 €, 1 between 30 € and 40 € (aso_hw_nisbets_fr_search_minuteur.txt).

The number that governs the whole business case. A three-channel physical timer - the direct analogue of a multi-timer board - costs 18,79 € once, from a supplier the kitchen already buys from, with no battery of a tablet, no update, no account, and 19 professional reviews averaging 4.1. Below that, a single magnetic timer is 3,19 €. Any subscription price has to beat a one-off purchase in that range, on a device the restaurant must also supply.

The second analogue incumbent is the sticker roll, and there is direct evidence a digital timer displaces it. McDonald's Prep Timer, 2021-09-25, 21 people found it helpful: "Works great! Keeps everything much cleaner because we don't put stickers on everything anymore" (aso_play_reviews_mcdonalds_prep_timer.txt).

The third is shouting, and no capture can price it. Stated plainly rather than smoothed over: the cost of a chef calling times across a pass is not measurable from any public source this audit can reach, so it is not quantified here. The measurable part of the same problem is that a timer nobody can hear is worthless, and reviewers say so in exactly those words - see §4.


4. Review mining - what 1,267 reviews actually say

Method. Apple customer reviews came from Apple's own RSS feed, pages 1 and 2, US and French storefronts, for each of the 20 Apple listings (80 feed captures, aso_reviews_*.json). Google Play reviews came from the review dialog opened by clicking "See all reviews" on each listing plus the reviews rendered inline on the product page (aso_play_reviews_*.txt, aso_play_detail_*.txt). Themes are counted by explicit keyword buckets in English and French - the bucket definitions are in the analysis script and every count below is reproducible from the stored captures. Because Play's rendered review text carries no machine-readable star rating, the strict complaint cut uses only the 358 Apple reviews rated 1, 2 or 3 stars.

Theme Count in the 358 Apple 1-3 star reviews Share Count across all 1,267 reviews
Advertising or paywall ruins the app 100 27.9% 270
Alarm did not fire / no sound at all 27 7.5% 52
Crash, freeze or bug 21 5.9% 45
Dies in background / lock screen / when switching apps 20 5.6% 47
Alarm too quiet to hear 11 3.1% 21
Voice or spoken announcement (wanted or broken) 10 2.8% 47
Wants several timers at once 9 2.5% 83
Wants to name or label each timer 6 1.7% 34
Interface too complicated / cluttered 5 1.4% 23
Praise: simple, easy, uncluttered 25 7.0% 194

4.1 The single most common complaint: advertising and paywalls

At 100 of 358 negative Apple reviews, this is the dominant failure of the consumer tier, and it is the same in both languages.

  • Flip Timer, 1 star, French: "Ce minuteur n'est absolument pas convivial d'utilisation et pollué par la publicité" (aso_reviews_flip_timer_fr_p1.json)
  • Flip Timer, 1 star, French: "Trop de pubs tuent l.application" (same capture)
  • Flip Timer, 1 star, US: "Poor functionality, mainly an ad service. It does not tick tock on countdown." (aso_reviews_flip_timer_us_p1.json)
  • Flip Timer, 2 stars, US: "these ads are a too much and make the app unusable. Sometimes there is no way to close the ad (no X in the upper corner) and you have to force close the whole timer app and re open it." (aso_reviews_flip_timer_us_p2.json)
  • About Timers, 1 star, US: "Each time I use, I have to 'restore purchase'. The app behaves as if I didn't pay for pro, so I have to go through the restore process every time." (aso_reviews_about_timers_gertjan_us_p1.json)

4.2 The complaint that is specifically about kitchens

Three separate reviewers, unprompted, name a professional kitchen as the environment the app fails in. This is the clearest external validation of the product thesis in the whole capture set.

  • Sous Chef, 1 star, "Not loud enough": "Downloaded for the timer and a timer is no good when you can't hear it. Would be okay if you aren't in a commercial kitchen with loud ovens etc." (aso_reviews_sous_chef_michael_chu_us_p1.json)
  • Thyme - A Modern Kitchen Timer, 2 stars: "What I really, really dislike is the fact that The DING/tone/alarm/chime sound is inaudible when the timer is up!! Hey, I don't cook in a monastery where silence is golden. My kitchen is loud and busy therefore I need a very loud tone" (aso_reviews_thyme_modern_kitchen_timer_us_p2.json)
  • Thyme - A Modern Kitchen Timer, 1 star: "it makes no audible sounds to indicate that the timer is done! It's a completely useless timer if you can't hear the alarm go off - especially while cooking in a kitchen, which appears to be its intended use." (aso_reviews_thyme_modern_kitchen_timer_us_p1.json)

4.3 The alarm-reliability complaint

  • MultiTimer (Persapps), 1 star: "When the timer goes off, if my phone is on silent (which it pretty much always is), there is no alert sound making the timer useless. This is not how the built in Apple alarms work. My alarm will go off even if my phone is on silent because that is the entire point of an alarm." (aso_reviews_multitimer_persapps_us_p1.json)
  • Flip Timer, 1 star: "I'm giving it one star because it looks great and works if you leave your phone with this app on the screen exclusively and stare at it using your mind powers. But if you set it to countdown for several hours and then… go use your phone or live your life…" (aso_reviews_flip_timer_us_p1.json)
  • Flip Timer, 2 stars, French: "Je n'ai plus de son de fin de Timer depuis aujourd'hui sans aucune raison. Toutes les notifications sont activées." (aso_reviews_flip_timer_fr_p1.json)
  • Kitchen Multi-Timer (Maxxt) puts the workaround in its own store listing rather than fixing it: "Important Notice: To ensure seamless operation, add this app to the whitelist of your power-saving or battery optimization settings. Failure to do so may result in the app being stopped in the background, causing you to miss important alarms." (aso_play_detail_kitchen_timer_maxxt_en_US.txt)

4.4 What users praise

194 reviews praise simplicity - "simple", "easy to use", "uncluttered", "facile". The praise and the "too complicated" complaint point the same direction: in this category, restraint wins. The other recurring praise is labelling plus concurrency, from a user who is not a cook but describes exactly the product's use case: "I can label timers for wait, potty, parallel play… I can more than one timer going at the same time" (aso_reviews_multipletimers_plus_komine_us_p1.json), and "I have a need to run 5 timers at the same time, this app allows me to do that… You can also have the timer talk to you" (same capture).


5. Positioning

5.1 What the product actually is, verified from the pinned commit

Every row is a fact read from the repository at 03a176e, not a marketing claim.

Capability Evidence
Independent concurrent timers on one board, single screen lib/ui/home.dart:31, lib/engine/engine.dart:27-28
Chained multi-step timers (a dish with named stages) TimerDef.isChain, lib/engine/models.dart:52
Batch cloning of a running dish, up to 3 Engine.maxBatch = 3, lib/engine/engine.dart:31
Time recomputed from absolute epoch deadlines, not decremented RunEntry.endsAt, lib/engine/models.dart:97
Spoken announcements on the device alarm audio stream own cadence/tts channel with USAGE_ALARM attributes, MainActivity.kt:122-127
Alarm loudness written to the device STREAM_ALARM, with a floor MainActivity.kt:43-63; AlarmVolume.floor = 0.15, lib/audio/alarm_volume.dart:28
Operating-system backstop alarm if the app is killed lib/alarm_backstop.dart, flutter_local_notifications
Screen kept awake all service WakelockPlus.enable(), lib/main.dart:28-32
On-device flight recorder for post-incident diagnosis lib/journal.dart
No advertising, no in-app purchase, no account pubspec.yaml:10-21 declares 10 dependencies; none is an ads, billing or analytics package
No network access at all, and on Android cannot have it the release manifest declares 8 permissions and android.permission.INTERNET is not among them: android/app/src/main/AndroidManifest.xml:2-17. Only the debug and profile variants add it (android/app/src/debug/AndroidManifest.xml:6, android/app/src/profile/AndroidManifest.xml:6), and those never ship.
French and English only lib/i18n.dart, 37 keys per language, two languages

5.2 The positioning table

Grades use the anchors set in research/02_framework_routing.md §6: A = verified and measurable from a capture we made; B = credible claim backed by evidence; C = exists, undifferentiated; D = exists with clear problems; F = absent. Where a competitor claim could not be verified from a capture, the equivalent {NAME} claim is qualified the same way.

Dimension {NAME} Best consumer app Professional tool (Antunes / KDS) Physical timer Who wins
Runs many independent timers at once A - Engine.run map, no cap on board size A - MultiTimer, Multi Timer StopWatch, Kitchen Multi-Timer all do this at 1M+ installs C - Antunes tracks prep-table condiments, not cook-line dishes D - the triple Hygiplas gets you three, then you buy another Tie with consumer tier
Alarm audible over a working kitchen B - routed to USAGE_ALARM with a volume floor; UNVERIFIED on hardware, no tablet was available to this audit D - three separate reviewers say the alarm is inaudible in a kitchen (§4.2) B - Antunes ships dedicated hardware with its own buzzer A - a mechanical timer at 18,79 € is loud by construction Physical timer
Alarm survives the app being backgrounded or killed B - OS backstop notification at the final deadline plus 1500 ms grace (lib/alarm_backstop.dart:175); not verified on a device D - Kitchen Multi-Timer tells users to whitelist it in battery settings rather than fixing it B - hardware does not get killed A Physical timer
Spoken call-outs, hands-free A - serial speech queue on the alarm stream, lib/audio/voice.dart C - 1Timer and Kitchen Timer+ Voice Control exist; 1Timer has 1,176 US ratings and was last updated 2024-08-02 F F {NAME}
One tap to start a known dish A - persisted timer definitions, tap to start C - presets exist in most; several reviewers complain about tap count B - Antunes' operator mode is exactly this F - you dial it every time Tie
Batch of the same dish A - clone up to 3, Engine.maxBatch F - no competitor listing captured advertises batch cloning C - condiment categories, not batches D - buy three timers {NAME}
No ads, no paywall, no account A - no ads/billing/analytics dependency in pubspec.yaml D - this is the #1 complaint in the category, 100 of 358 negative reviews B - Antunes and KDS apps are free front-ends to paid hardware or service A {NAME} and physical
Cannot exfiltrate anything: no network permission A - INTERNET absent from the release manifest F - MultiTimer reviewer, 3 stars: "there are as many as three third-party services running in the background collecting user information" (aso_reviews_multitimer_persapps_fr_p1.json); Play data-safety on Kitchen Multi-Timer declares sharing of "App activity, App info and performance, and Device or other IDs" D - a KDS is a cloud service by design A {NAME} and physical
Tablet-first, wall-mountable, all-day B - wakelock + immersive mode + grid layout that solves for tile size D - phone-shaped; several are iPhone-first B - Antunes says outright "This app is designed for iPad" A Tie
Language coverage D - French and English only A - Play machine-translates listings into every locale; competitors ship 10+ B - Antunes lists "English, Spanish, French & Chinese" n/a Competitors
iOS parity F - no iOS background alarm at all; getAlarmVolume returns nil on iOS and Dart falls back to app-level gain (ios/Runner/AppDelegate.swift:54-59) A - every Apple competitor listed ships a working iOS build B - Antunes ships iPad n/a Competitors
Track record the buyer can check F - zero ratings, zero installs, not yet published A - 40,666 Apple ratings on Timer+; 1M+ Android installs on four apps C - Antunes 3.9 with an app abandoned since 2023 A - 49 buyer reviews on a 3,39 € timer Competitors
Price competitiveness against the incumbent UNRESOLVED - no price is set; the number to beat is 18,79 € once for three channels A - free D - Square KDS at $20-30/month/device A Physical timer

5.3 The dominance check

The framework requires this to be mechanical: count the dimensions on which each competitor grades equal to or better than {NAME}, and if the answer is zero for everyone, the grading is wrong.

  • Consumer tier: better or equal on 7 of 13 (concurrency, audibility, background survival, one tap, language coverage, iOS parity, track record, price - 8 counting price).
  • Professional tier: better or equal on 7 of 13.
  • Physical timer: better or equal on 7 of 13, and it wins outright on the three that decide a purchase - audibility, reliability, price.

No competitor is dominated. The result passes the check.

5.4 Where the product is genuinely stronger

  1. Spoken call-outs on the alarm audio stream. No professional tool captured does this, and the two consumer voice timers are weak: 1Timer - Voice Timer has 1,176 US ratings and was last updated 2024-08-02; Kitchen Timer+ Voice Control holds a 1.00 US rating from one review.
  2. Batch cloning. Zero of the 36 listings captured advertises duplicating a running dish. It is the one feature that is obviously a restaurant feature and obviously not a home feature.
  3. No advertising and no paywall, in the one category where that is the top complaint. 100 of 358 negative Apple reviews are about ads or paywalls.
  4. Structurally incapable of sending data anywhere. A restaurant buyer who asks "where does my data go" gets an answer no competitor can match: the release build has no network permission at all. Competitors in the same search results declare sharing of device identifiers.
  5. A named niche nobody defends. Two apps have tried the restaurant-multi-timer positioning and both sit at zero or one rating.

5.5 Where the product is genuinely weaker

  1. Nobody has heard the alarm on real hardware. The audibility claim is the product's core promise and it is graded B, unverified, because no tablet was available to this audit. Three competitors were destroyed in reviews on exactly this axis.
  2. iOS is not a product yet. No iOS background alarm, and getAlarmVolume returns nil on iOS. The App Store listing cannot honestly make the same alarm promise as the Play listing.
  3. Two languages. French and English bound the addressable market to those markets. Every million-install competitor is available in far more.
  4. Zero social proof. A restaurant buys tools other restaurants use. Timer+ has 40,666 Apple ratings; this has none, and the professional tier shows that a 100-install app is what an unsupported professional product looks like.
  5. No price, against a hard anchor. 18,79 € once, for three channels, from a supplier the kitchen already has an account with.

5.6 Table stakes the product lacks

These are things competitors treat as baseline. Each is reported as a specification, not built - new end-user features are out of scope for this audit (AGENT_RULES.md R6).

Missing Who treats it as baseline Evidence
A widget or lock-screen surface Multi Timer StopWatch ("Beautiful Widgets: Access your timers quickly"); Kitchen Multi-Timer ("custom presets, widgets") aso_play_detail_multi_timer_stopwatch_lemonclip_en_US.txt, aso_play_detail_kitchen_timer_maxxt_en_US.txt
A stopwatch alongside the timers across the 36 captured listing titles, "stopwatch" appears 9 times and "chronomètre" 4 times title-word frequency, aso/02_keywords.md §3.3
Per-timer colour coding MultipleTimers+ reviewers praise "color coding"; Kitchen Timer - Simple Cooking's subtitle is "Custom patterns & colors." aso_reviews_multipletimers_plus_komine_us_p1.json, aso_appstore_product_kitchen_timer_simple_focaccia_us.txt
More than 3 batch clones reviewer: "I have a need to run 5 timers at the same time" aso_reviews_multipletimers_plus_komine_us_p1.json
An operator vs manager mode (lock the definitions during service) Antunes: "two modes - Operator & Store manager mode" aso_play_detail_antunes_prep_timer_en_US.txt
More than two languages Antunes: "English, Spanish, French & Chinese" same
An iOS build with a working background alarm every Apple competitor §5.2

6. Actions

Each names the competitor behaviour that prompted it and starts with an implementable verb, per the actionability standard in research/02_framework_routing.md §6.

  1. Test the alarm at volume in a real kitchen before writing any store copy. Three reviewers killed Thyme and Sous Chef on inaudibility; the product's entire differentiation rests on the opposite claim and it is currently unverified.
  2. Publish the no-network fact as a first-class selling line, in the short description and the privacy answers. A MultiTimer reviewer uninstalled over "three third-party services running in the background collecting user information"; Play's data-safety panel on the 1M-install Kitchen Multi-Timer declares sharing of device identifiers. Nobody in this category can answer this question the way this product can.
  3. Price against 18,79 €, not against free. The competitor that matters is a triple Hygiplas timer from Nisbets, not another free app.
  4. Build the operator/manager lock that Antunes ships. It is the one professional affordance the only serious professional vendor considered non-negotiable, and the product has no equivalent.
  5. Write the French listing as original metadata, not a translation. Every competitor with real French traction ships a distinct French title and subtitle; see aso/02_keywords.md.

7. Sources

All under proof/03_market/captures/, indexed with URL, UTC retrieval time, HTTP status and byte count in MANIFEST_aso.md. Store and policy facts come from developer.apple.com, support.google.com/googleplay/android-developer, the Apple iTunes web services, and Google Play itself. Prices for physical timers come from the professional catering suppliers named in each row. No paid ASO platform was used, and no figure in this document originates from one.

02 - Keyword research and store metadata (Phase 3.2)aso/02_keywords.md · raw .md

02 - Keyword research and store metadata (Phase 3.2)

Produced: 2026-08-04. Companion to aso/01_competitors.md, which holds the competitor set and the review mining this ranking is built on.

The product name is written throughout as the substitutable token {NAME}. Every draft string below is designed so the name is the only part that changes; the character budget left for it is stated explicitly on every line where it matters.

ASO = app store optimisation. Keyword field = Apple's discrete, hidden, comma-separated 100-character metadata field. Autocomplete / search suggestions = the completions a store's own search box offers while a user types.


1. The character limits, from the official sources

Every limit below was read off a page captured for this audit. Capture paths are relative to proof/03_market/captures/; each capture header carries the full source URL, the HTTP status and the UTC retrieval time.

Store Field Limit Official wording Capture
Apple App Store App name (title) 30 characters, minimum 2 "The name must be at least two characters and no more than 30 characters." aso_apple_help_app_information2.txt - App Store Connect help, "App information" page on developer.apple.com
Apple App Store App name (title) 30 characters "An app name can be up to 30 characters long." aso_apple_product_page_guide.txt - developer.apple.com/app-store/product-page/
Apple App Store Subtitle 30 characters "A summary of your app that appears under your app's name on your App Store product page. This can't be longer than 30 characters." aso_apple_help_app_information2.txt
Apple App Store Subtitle 30 characters "A subtitle can be up to 30 characters long and appears below your app's name throughout the App Store." aso_apple_product_page_guide.txt
Apple App Store Keywords 100 characters, comma-separated, no spaces between terms, no repetition of words already in the name, subtitle or category "Keywords are limited to 100 characters total, with terms separated by commas and no spaces. You can use spaces to separate words within keyword phrases. For example: Property,House,Real Estate. Don't repeat any words any words included in your app name, subtitle, or category." (the doubled "any words" is verbatim from Apple) aso_apple_search_guide.txt - developer.apple.com/app-store/search/
Apple App Store Keywords 100 characters "Keywords are limited to 100 characters total, with terms separated by commas and no spaces. (Note that you can use spaces to separate words within keyword phrases…)" aso_apple_product_page_guide.txt
Apple App Store Promotional text (context only) 170 characters, editable without a new version "Your app's promotional text appears at the top of the description and is up to 170 characters long." aso_apple_product_page_guide.txt
Google Play App title 30 characters "Your app title must be 30 characters or less." aso_play_help_store_listing_best.txt (support.google.com/googleplay/android-developer/answer/13393723) and aso_play_help_metadata_policy.txt (…/answer/9898842)
Google Play Short description 80 characters "A short description should convey your app or game's message in 80 characters or less." aso_play_help_store_listing_best.txt
Google Play Full description 4,000 characters "A full description allows for 4,000 characters." aso_play_help_store_listing_best.txt

1.1 How Play's indexing differs from Apple's

This is a structural difference, not a matter of degree, and it changes what the two listings must contain.

Apple has a hidden keyword field and asks you not to duplicate. The 100-character field is invisible to users, it is comma-separated, and Apple's own search guidance instructs developers not to repeat words already used in the name, subtitle or category - because those are indexed separately (aso_apple_search_guide.txt). Every character spent repeating a title word is wasted. The practical consequence: Apple metadata is written as three non-overlapping sets.

Play has no keyword field at all, and indexes the visible text instead. Google's own discovery guidance says the store listing text is the discovery surface: "The text in your store listing helps users discover your app", and, for the description specifically, "Use SEO best practices in your 'Description', but be mindful of the Google Play Content Policies regarding spam and IP Infringement (for example, keyword spamming…)" (aso_play_help_get_discovered.txt, support.google.com/googleplay/android-developer/answer/4448378). The same page states that ranking also weighs non-text signals: "Apps are ranked based on a combination of ratings, reviews, downloads, and other factors." The practical consequence: the Play 4,000-character description must carry the vocabulary naturally, in prose a human would read, and repeating the title's words there is correct rather than wasteful - the opposite of Apple's rule.

Second consequence, already visible in the captures: Play machine-translates listings a developer does not localise ("Google provides automated machine translations of store listings that you don't explicitly define for your app. However, using a professional translation service for your 'Description' can lead to better search results", aso_play_help_get_discovered.txt). The French Play listing is therefore not optional metadata but a ranking asset, and every serious competitor writes it by hand: Multi Timer: Timer + Stopwatch ships in France as Chronomètre et Minuteur Sport, Kitchen Multi-Timer as Multi-Minuteur de Cuisine, Kitchen Timer (Multiple Alarm) as minuterie de cuisine (aso_play_detail_*_fr_FR.txt).


2. The ranking method, stated before the ranking

2.1 What this ranking is, and what it is not

It is directional, not volumetric. It orders terms by how attractive they are for a new, zero-rating entrant. It does not state search volume, difficulty scores, or install estimates, because the only sources of those are paid ASO platforms this project does not own. Under this audit's rules, claiming their output is prohibited (AGENT_RULES.md R11) and any figure without a source is prohibited (R1). No number in this document comes from anywhere except a file under proof/03_market/captures/.

What a paid platform would add, precisely. Three things, and only three: (1) an absolute monthly search-volume estimate per term per storefront, which would let terms be compared across languages rather than only within a set; (2) a modelled difficulty score blending competitor age, rating velocity and install estimates, which would sharpen the crowding axis below from a count into a probability; (3) historical rank tracking, which would show whether a term is rising or decaying. Without them, this ranking can say which of these terms is the better bet but cannot say how much traffic any of them carries. That is the honest boundary of the deliverable, stated here rather than buried.

2.2 The five evidence axes, each traceable to a capture

Axis What it measures Where it comes from
S - the store suggests it Whether the store's own search box completes a user typing the stem. This is the strongest available proxy for real query demand, because a store only suggests what people search. Google Play autocomplete, typed character-by-character into the live search box inside headless Chromium: aso_play_autocomplete_*.json (18 captures)
N - supply depth How many apps the store returns for the term. A large set means the term is well populated; a set of zero means the term is not a query the store has apps for. Apple iTunes search web service, resultCount: aso_itunes_search_*.json (42 captures)
C - crowding at the top How many of the term's top ten results already hold 1,000 or more ratings. Lower is better for a new entrant: it is how far down the ladder the first weak incumbent sits. same captures, userRatingCount per result
D - domain fit How many of the top ten are actually kitchen-domain apps, versus fitness, study, games or restaurant booking. A term whose results are the wrong category cannot convert. same captures, matched on kitchen tokens in the result title
V - vocabulary corroboration Whether the term's words appear in competitor titles and subtitles, and in the words real users type in reviews. competitor title and subtitle extraction from aso_appstore_product_*.txt and aso_play_detail_*.txt; review vocabulary from the 1,267 reviews mined in aso/01_competitors.md §4

Ordering rule, applied mechanically: a term ranks higher when it is store-suggested (S), its top ten are kitchen apps (high D), and few of those top ten are already strong (low C). Supply depth (N) breaks ties and flags dead terms. Vocabulary (V) acts as a veto: a term nobody in the market uses does not enter the set regardless of its other numbers.

2.3 One capability gap, reported rather than smoothed over

Apple's search suggestions could not be captured. Apple's search-hints endpoint (search.itunes.apple.com/WebObjects/MZSearchHints.woa/wa/hints) responds with HTTP 200 and a valid property-list document for all 18 seeds tried, in both the US (s=143441) and French (s=143442) storefronts, but the hints array contains only an echo of the term typed and no completions (aso_apple_autocomplete_us_*.xml, aso_apple_autocomplete_fr_*.xml). Adding clientApplication=Software, media=software or a storefront parameter returns an empty array instead. Apple's web App Store has no public search-results page: apps.apple.com/us/search?term=… and apps.apple.com/us/search/kitchen-timer both return HTTP 404.

So the S axis is Google Play evidence only, and the Apple ranking rests on N, C, D and V. This is named as a limitation rather than papered over. The exact artifact that would close it: a capture of Apple's suggestion list from an authenticated App Store client on a real iOS device, or a paid-platform export - neither of which this audit has.


3. The evidence, before the ranking

3.1 Google Play autocomplete - what the store completes

Verbatim from the captures; the seed typed is on the left.

Seed typed Play suggestions returned Capture
kitchen ti (en/US) kitchen timer, kitchen timer app free, kitchen tiles design, kitchen time, kitchen tips aso_play_autocomplete_en_US_kitchen_ti.json
cooking ti (en/US) cooking timer, cooking timer app, cooking time management games, cooking tips in tamil, cooking time aso_play_autocomplete_en_US_cooking_ti.json
multi tim (en/US) multi timer, multi timer app, multi timer stopwatch, multi timer pro, multi time zone watch face aso_play_autocomplete_en_US_multi_tim.json
chef ti (en/US) chef time, chef timer, kitchen set chef time, cooking chef time, kenwood chef titanium aso_play_autocomplete_en_US_chef_ti.json
talking tim (en/US) talking tom, talking time, talking timer, talking time clock, talking timer app aso_play_autocomplete_en_US_talking_tim.json
prep ti (en/US) prep time, prep titans, prep titans lms, prep titans app, prep timer aso_play_autocomplete_en_US_prep_ti.json
timer for cook (en/US) timer for cooking, timer app for cooking aso_play_autocomplete_en_US_timer_for_cook.json
restaurant ti (en/US) restaurant tip calculator, restaurant time management games, restaurant tips, restaurant ticket, ticket restaurant app - no timer completion aso_play_autocomplete_en_US_restaurant_ti.json
commercial kit (en/US) commercial kitchen design app - no timer completion aso_play_autocomplete_en_US_commercial_kit.json
minuteur (fr/FR) minuteur, minuteur sport, minuteur cuisine gratuit, minuteur gratuit, minuteur echec aso_play_autocomplete_fr_FR_minuteur.json
minuteur cui (fr/FR) minuteur cuisine gratuit, minuteur cuisine aso_play_autocomplete_fr_FR_minuteur_cui.json
minuteur de (fr/FR) minuteur de sport, minuteur de cuisine, minuteur de sommeil, minuteur de boxe, minuteur de contraction aso_play_autocomplete_fr_FR_minuteur_de.json
minuterie (fr/FR) minuterie, minuterie gratuite, minuterie boxe, minuterie de boxe, minuterie d'intervalle aso_play_autocomplete_fr_FR_minuterie.json
minuteur multi (fr/FR) minuteur multiple, multi minuteur aso_play_autocomplete_fr_FR_minuteur_multi.json
minuteur voc (fr/FR) minuteur vocal aso_play_autocomplete_fr_FR_minuteur_voc.json
chronom (fr/FR) chronomètre, chronomètre gratuit, chronomètre sport, chronometre, chronometer aso_play_autocomplete_fr_FR_chronom.json
cuisine pro (fr/FR) cuisine pro, cuisine professionnelle, jeux de cuisine professionnel, jeux de cuisine pro, cuisine 3d pro aso_play_autocomplete_fr_FR_cuisine_pro.json
minuteur pro (fr/FR) empty - the store offers no completion at all aso_play_autocomplete_fr_FR_minuteur_pro.json

Four results from this table decide much of the ranking:

  • The store attaches "cuisine" to "minuteur" unprompted (minuteurminuteur cuisine gratuit; minuteur deminuteur de cuisine). French users searching for a timer are already searching for a kitchen timer.
  • restaurant ti does not complete to a timer at all. In English, "restaurant" is a booking, tipping and ticketing word, not a timing word.
  • minuteur pro returns nothing. The store has no completion for it.
  • chronomètre completes to sport, and minuterie completes to boxing and intervals. Those two French words are owned by the fitness category, not by kitchens.

3.2 Apple's ranked result sets - supply, crowding, domain fit

n is Apple's resultCount for the term. ≥1k counts how many of the top ten already hold 1,000 or more ratings. kitchen counts how many of the top ten are kitchen-domain apps. All from aso_itunes_search_{us,fr}_<term>.json.

English, US storefront

Term n ≥1k in top 10 kitchen in top 10 Read
chef timer 42 2 9 best English combination in the set: right category, weakest incumbents
line cook timer 38 3 8 professional long tail, right category
kitchen timer 48 4 6 the head term; crowded but on-domain
cooking timer 49 3 6 close second head term
kitchen display system 47 1 6 wrong product (ticket routing), right buyer
prep timer 46 5 5 split intent: Antunes plus exam-study apps
commercial kitchen timer 42 3 4 on-domain but no autocomplete demand evidence
restaurant timer 46 4 4 top ten includes Restaurant365 and booking apps
multiple timers 48 4 1 concurrency term, category-neutral
multi timer 44 3 0 concurrency term, zero kitchen framing
talking timer 50 3 0 feature term, uncontested by kitchen apps
voice timer 45 3 0 feature term
food timer 49 8 3 dominated by fasting and meal-tracking apps
batch timer 48 7 1 dominated by study and hatch-countdown apps
tablet timer 47 6 1 device word, wrong results
timer board 48 1 0 board-game results; an invented category

French, FR storefront

Term n ≥1k in top 10 kitchen in top 10 Read
minuteur cuisine 41 1 5 best French term in the set by a distance
minuteur chef 10 0 7 thinnest, most on-domain term found; no autocomplete evidence
cooking timer (English, searched in FR) 44 1 7 French users are served English-named apps too
kitchen timer (English, searched in FR) 32 1 6 same
minuterie cuisine 33 0 2 uncontested but weak domain fit
chronomètre cuisine 39 0 2 uncontested but the results are stopwatches
minuteur vocal 29 0 0 uncontested; matches the product's own feature
compte à rebours cuisine 29 0 2 real French phrase, weak domain fit
minuteur multiple 26 4 0 concurrency term, contested
plusieurs minuteurs 12 0 1 natural phrase, thin supply
minuterie 46 5 0 head term owned by fitness
minuteur 40 7 0 head term, hardest in the set
minuteur parlant 13 0 0 thin; "vocal" is the live variant
restaurant timer 14 0 2 thin
cuisine professionnelle 18 0 0 wrong intent: recipes, furniture, catering suppliers
brigade cuisine 7 1 1 wrong intent: staffing apps (Brigad)
minuteur restaurant 3 0 1 almost no supply
minuteur professionnel 0 0 0 Apple returns zero apps. Dead term.
minuteur tablette 0 0 0 Apple returns zero apps. Dead term.

Those two zero-result French terms are the single most useful negative finding here. The instinct for a professional product is to reach for minuteur professionnel; the store has no index entry for it, and Play's search box offers no completion for minuteur pro either (§3.1). Spending title or keyword characters on it would spend them on nothing.

3.3 Competitor title and subtitle vocabulary

Word frequency across the 36 competitor listings' titles, both languages, stop-words removed (source: aso_itunes_lookup_*.json and aso_play_detail_*.txt):

kitchen 18 · multi 10 · stopwatch 9 · minuteur 9 · antunes 6 · prep 6 · multiple 6 · cuisine 5 · multitimer 5 · chronomètre 4 · cooking 3 · chrono 2 · minuterie 2 · voice 2 · chef 2 · cook 2 · countdown 2 · display 2 · kds 2 · visual 2

Subtitles are where competitors put their positioning, and they confirm the same vocabulary: "Multiple Timers & Stopwatch", "Run simultaneous timers", "Runs simultaneously", "Multiple timers & countdown", "Repeat & multiple step timing", "Kitchen cooking alarm", "Multi-timer for restaurants", "Multi Timer Cookline"; in French, "Alarme De Cuisine", "Minuterie de cuisine", "Cuisine Minuteur & Chronomètre", "Multi minuteur & chronometres", "Annonce le temps restant", "Coloré, alertes en fond", "Minuteur pour cuisine,étude" (aso_appstore_product_*.txt).

3.4 The words real users use

From the 1,267 reviews mined in aso/01_competitors.md §4, the highest-frequency content words after stop-word removal: alarm 136 · simple 128 · phone 125 · work 123 · easy 118 · sound 116 · screen 108 · multiple 100 · sounds 65 · très 82 · bien 64.

Users say alarm and sound, not "countdown". They say multiple, not "concurrent". They praise simple and easy far more than any feature. That is a copy instruction as much as a keyword one, and it is why the drafted subtitles below use plain words.


4. The ranked keyword sets

Ranks follow the ordering rule in §2.2. Each row carries the evidence that produced it. No row carries a volume or a difficulty score, because none was measured.

4.1 English - Apple App Store and Google Play

Rank Term Store suggests it (S) Apple n ≥1k in top 10 (C) kitchen in top 10 (D) Why it ranks here
1 kitchen timer Yes, first completion of kitchen ti 48 4 6 The only term with both confirmed store demand and a kitchen-dominated result set. Non-negotiable in the title.
2 chef timer Yes, second completion of chef ti 42 2 9 Highest domain fit and lowest crowding of any suggested English term. The single best opportunity in the set.
3 cooking timer Yes, first completion of cooking ti 49 3 6 Head term with confirmed demand; timer for cooking is also suggested, so both word orders are live.
4 multi timer Yes, four completions of multi tim 44 3 0 Strongest suggestion evidence in English (multi timer, multi timer app, multi timer stopwatch, multi timer pro) and it carries the concurrency claim, but it brings no kitchen framing on its own.
5 line cook timer Not probed 38 3 8 Second-highest domain fit; the professional phrase, and the one a chef would type that a home cook never would.
6 restaurant timer No - restaurant ti completes to tips, tickets and games 46 4 4 Buyers use the word; the store does not associate it with timing. Keep it in the keyword field, keep it out of the title.
7 talking timer Yes: talking timer, talking timer app 50 3 0 Confirmed demand, and no kitchen app competes for it. The route in for the spoken-announcement feature.
8 prep timer Yes, fifth completion of prep ti 46 5 5 Split intent: Antunes' professional apps sit alongside exam-study timers.
9 commercial kitchen timer No - commercial kit completes only to a design app 42 3 4 Buyer-language, no demand evidence.
10 multiple timers Not probed 48 4 1 Long-form variant of rank 4; useful in the Play description prose.
11 voice timer Not probed 45 3 0 Feature term; talking timer has the demand evidence and is preferred.
- food timer / batch timer / tablet timer / timer board Not probed 47-49 6-8 0-3 Rejected: crowded by unrelated categories, no kitchen results. timer board is our own coinage with no market evidence behind it.

4.2 French - Apple App Store and Google Play

The instruction here was to establish what French chefs would actually search rather than translate the English list. The captures settle it.

Rank Term Store suggests it (S) Apple n ≥1k in top 10 (C) kitchen in top 10 (D) Why it ranks here
1 minuteur cuisine Yes - the store attaches "cuisine" to "minuteur" unprompted: minuteurminuteur cuisine gratuit; minuteur cuiminuteur cuisine; minuteur deminuteur de cuisine 41 1 5 Confirmed demand, kitchen-dominated results, and only one strong incumbent in the top ten. The best term in either language.
2 minuteur Yes, the head completion 40 7 0 The word French users actually type. Unavoidable, and the hardest: seven of the top ten already hold 1,000+ ratings, and none of them is a kitchen app.
3 minuterie Yes: minuterie, minuterie gratuite 46 5 0 A separately-searched word, not a synonym you can skip. But Play completes it to minuterie boxe and minuterie d'intervalle: in practice the fitness category owns it.
4 minuteur multiple / multi minuteur Yes, both forms, from minuteur multi 26 4 0 The concurrency claim, with demand confirmed in both word orders. Thinner supply than the head terms.
5 minuteur vocal Yes, from minuteur voc 29 0 0 Confirmed demand and not one of the top ten holds 1,000 ratings. Uncontested, and it is exactly what the product does.
6 minuteur chef Not suggested 10 0 7 The emptiest on-domain French term found: seven of ten results are kitchen apps and none is strong. It ranks below the suggested terms only because there is no demand evidence for it.
7 compte à rebours The phrase pattern is live in Play FR (15 apps returned for it) 29 (with "cuisine") 0 2 The plain French for "countdown". Uncontested, weak domain fit.
8 chronomètre Yes: chronomètre, chronomètre gratuit, chronomètre sport 39 (with "cuisine") 0 2 A stopwatch, not a timer. The suggestions attach it to sport. Include for coverage, never lead with it.
9 minuterie cuisine Not directly suggested 33 0 2 Zero strong incumbents, but Apple's results for it are not kitchen apps.
10 plusieurs minuteurs Not suggested 12 0 1 Natural spoken French; almost no supply.
- cuisine professionnelle Yes (cuisine procuisine professionnelle) 18 0 0 Rejected on intent. Suggested, but Apple's top ten for it contains zero timing apps: recipe apps, a furniture trade show, a dessert supplier. The demand is real and it is not our demand.
- brigade cuisine Not suggested 7 1 1 Rejected on intent. The top result is Brigad, a hospitality staffing marketplace. "Brigade" in a French kitchen means the team, not the equipment.
- minuteur professionnel No - Play returns an empty suggestion list 0 0 0 Rejected: dead term. Apple returns zero apps.
- minuteur tablette Not suggested 0 0 0 Rejected: dead term. Apple returns zero apps.

The French finding that matters most. The literal translations of the English professional vocabulary are dead. minuteur professionnel and minuteur tablette return zero apps from Apple, and Play's search box offers no completion for minuteur pro. What French users actually type is minuteur plus cuisine, and the store itself completes them that way. A French listing should therefore be built on minuteur cuisine, carry minuterie, chronomètre and compte à rebours for coverage, and reach the professional buyer through the description prose and the screenshots rather than through a keyword nobody types.


5. Draft metadata, character-counted

Counts were computed on the exact strings below. Each is shown twice: as written with the {NAME} token, and with a 7-character name substituted (the length of the current placeholder), so the budget left for a different name is explicit.

5.1 Apple App Store - English

Field Limit Draft With token With 7-char name
App name 30 {NAME}: Kitchen Timer Board 27 28 - name budget 9 characters
Subtitle 30 Multi timer for pro kitchens 28 28
Keywords 100 chef,cook,line,prep,station,restaurant,brigade,countdown,alarm,voice,tablet,batch,dish,service,shift 100 100

The keyword field spends nothing on repetition: none of kitchen, timer, board, multi, for, pro or kitchens appears in it, per Apple's instruction not to repeat name, subtitle or category words (aso_apple_search_guide.txt). The commas carry no spaces, per the same source. If the category is set to Food & Drink, food and drink must also stay out of the field; neither is present.

5.2 Apple App Store - French

Field Limit Draft With token With 7-char name
App name 30 {NAME}: Minuteur Cuisine Pro 28 29 - name budget 8 characters
Subtitle 30 Tableau de minuteurs du chef 28 28
Keywords 100 minuterie,compte à rebours,alarme,vocal,parlant,restaurant,brigade,cuisson,tablette,multiple,service 100 100

compte à rebours uses spaces inside a single keyword phrase, which Apple permits explicitly: "You can use spaces to separate words within keyword phrases. For example: Property,House,Real Estate" (aso_apple_search_guide.txt). No keyword repeats minuteur, cuisine, pro, tableau or chef from the name and subtitle.

Note the deliberate omission: minuteur professionnel appears nowhere, because Apple returns zero apps for it (§4.2).

5.3 Google Play - English

Field Limit Draft With token With 7-char name
Title 30 {NAME}: Kitchen Timer Board 27 28 - name budget 9 characters
Short description 80 Multi-timer board for pro kitchens. One tap, loud alarm, spoken call-outs. 74 74
Full description 4,000 see below 1,922 1,926
{NAME} is a multi-timer board for professional kitchens. It does one job: it keeps every dish on the pass on time, on a tablet that sits on the wall or the bench and runs all service.

WHAT IT DOES
- One board, many timers. Every dish is a tile. Tap the tile and it runs. Nothing is buried in a menu.
- One tap for a dish you already know. Save the cook time once, start it without dialling numbers again.
- Batch the same dish. Duplicate a running dish into extra timers when three orders of the same thing land at once.
- Chained steps. A dish with stages - cook, flip, cook - runs as one timer that moves itself to the next step.
- Readable from across the kitchen. Each tile fills with colour as its time runs down, from calm through amber to red, so you read the whole board at a glance instead of squinting at digits.
- Audible over the extraction. The alarm plays on the device alarm stream with a volume floor, not on the media stream your notification settings silence.
- It calls the dish by name. {NAME} speaks the dish out loud when it is ready, so nobody has to look up.
- It still rings if the app is closed. A backup alarm is scheduled with the operating system for every running dish.
- French and English.

WHAT IT DOES NOT DO
- No adverts. Not one, ever.
- No account, no sign-up, no email address.
- No network access. {NAME} holds no internet permission at all, so nothing you type into it can leave the tablet. No analytics, no tracking, no cloud.

BUILT FOR A KITCHEN, NOT A PHONE
A timer made for home cooking assumes a quiet room, a phone in your hand, and your full attention. A service kitchen has none of those. {NAME} assumes the opposite: a shared screen, wet hands, noise, and six things running at once.

Chef, line cook, prep, pastry, pizza, bakery, food truck, ghost kitchen, commissary: if you run more than one timer at a time and you cannot afford to miss one, this is the board for it.

The description places every ranked English term in prose a human would read: kitchen timer, multi-timer, cooking, chef, line cook, prep, alarm, timers, tablet. It does not repeat a keyword in a list, which is what Play's policy names as spam ("Don't use special characters or all caps to manipulate search ranking", aso_play_help_metadata_policy.txt). The "WHAT IT DOES NOT DO" block is the direct answer to the category's top complaint: 100 of 358 negative Apple reviews across these competitors are about advertising or paywalls (aso/01_competitors.md §4.1).

One claim in this text must be verified before it ships. "Audible over the extraction" rests on the alarm being routed to the device alarm stream with a volume floor, which is true in the code (MainActivity.kt:43-63, lib/audio/alarm_volume.dart:28) but has never been tested on hardware by this audit. If the hardware test fails, that line comes out before the listing goes live.

Two claims are bounded by fact and must not be widened. "French and English" is the whole language list (lib/i18n.dart). And the background-alarm promise holds on Android only: there is no iOS background alarm, and getAlarmVolume returns nil on iOS (ios/Runner/AppDelegate.swift:54-59). The App Store description must not carry the Play description's backup-alarm sentence unchanged.

5.4 Google Play - French

Field Limit Draft With token With 7-char name
Title 30 {NAME}: Minuteur Cuisine Pro 28 29 - name budget 8 characters
Short description 80 Tableau de minuteurs pour la cuisine pro. Un geste, alarme forte, voix. 71 71
Full description 4,000 see below 2,230 2,234
{NAME} est un tableau de minuteurs pour la cuisine professionnelle. Une seule mission : que chaque plat sorte à l'heure, sur une tablette posée au mur ou sur le plan de travail, allumée pendant tout le service.

CE QUE FAIT L'APPLICATION
- Un tableau, autant de minuteurs qu'il faut. Chaque plat est une tuile. On appuie, ça tourne. Rien n'est caché dans un menu.
- Un geste pour un plat connu. Le temps de cuisson est enregistré une fois, on ne le compose plus jamais.
- Le même plat en série. Un plat en cours se duplique en minuteurs supplémentaires quand trois commandes identiques tombent en même temps.
- Cuissons en plusieurs étapes. Un plat à étapes - cuire, retourner, cuire - tient dans un seul minuteur qui passe tout seul à l'étape suivante.
- Lisible depuis l'autre bout de la cuisine. Chaque tuile se remplit de couleur à mesure que le temps descend, du vert à l'ambre puis au rouge : on lit le tableau d'un coup d'œil au lieu de déchiffrer des chiffres.
- Audible malgré la hotte. L'alarme passe par le flux d'alarme de l'appareil, avec un volume plancher, et non par le flux multimédia que vos réglages de notification font taire.
- Elle annonce le plat. {NAME} dit le nom du plat à voix haute quand il est prêt : personne n'a besoin de lever les yeux.
- Elle sonne même application fermée. Une alarme de secours est programmée auprès du système pour chaque plat en cours.
- Français et anglais.

CE QUE L'APPLICATION NE FAIT PAS
- Aucune publicité. Jamais.
- Aucun compte, aucune inscription, aucune adresse e-mail.
- Aucun accès réseau. {NAME} ne demande même pas la permission internet : rien de ce que vous saisissez ne peut quitter la tablette. Ni mesure d'audience, ni pistage, ni cloud.

CONÇUE POUR UNE CUISINE, PAS POUR UN TÉLÉPHONE
Un minuteur pensé pour la cuisine familiale suppose une pièce calme, un téléphone en main et toute votre attention. Un service n'a rien de tout cela. {NAME} part de l'inverse : un écran partagé, des mains mouillées, du bruit, et six choses en route en même temps.

Chef, cuisinier, commis, pâtisserie, pizzeria, boulangerie, food truck, cuisine centrale : dès que vous tenez plusieurs minuteurs à la fois et que vous ne pouvez pas en rater un, ce tableau est fait pour ça.

This is written as original French, not a translation of §5.3, which is what the evidence calls for: every competitor with real French traction ships hand-written French metadata (§1.1), and the French keyword set is a different shape from the English one (§4.2). It carries minuteur, minuteurs, cuisine, tableau, alarme, cuisson, tablette, plusieurs minuteurs, chef, cuisinier and commis naturally. It deliberately does not contain minuteur professionnel.


6. What is not claimed here

Stated plainly so the verification pass can check it quickly.

  • No search volume figure appears in this document, for any term, in either language, on either store. None was measured and none is available without a paid platform this project does not own.
  • No difficulty score appears in this document. The crowding axis is a count of how many top-ten results already hold 1,000 or more ratings, read from Apple's own web service, and it is labelled as that count and nothing more.
  • No install estimate appears except Google Play's own published download bands, quoted verbatim from the captured listings in aso/01_competitors.md §1.2.
  • Apple's search suggestions are absent and the reason is documented in §2.3 with the exact endpoint, the parameters tried, and the artifact that would close the gap.
  • The ranking is therefore directional: it says which terms are the better bets and why, with every input traceable to a file under proof/03_market/captures/. It does not say how much traffic any term carries.
03 — Store listing copy, screenshots and graphic assets (Phase 3.3)aso/03_listing_copy.md · raw .md

03 — Store listing copy, screenshots and graphic assets (Phase 3.3)

Produced: 2026-08-04. Subject: the app repository at pinned commit 03a176e72ef0075eec86b8915cbe6e93042a3b9d, version 0.4.12+18.

This document is the finished copy, not a brief about copy. Every field below is ready to paste into App Store Connect or Play Console. Companion documents: aso/01_competitors.md (what the category looks like), aso/02_keywords.md (the ranked term list — see §1.3 for the dependency), store_readiness/01_google_play.md and store_readiness/04_ios_blockers.md (the submission mechanics), research/03_business_decisions.md (name, entity, price).

The product name is written as the single substitutable token {NAME} throughout. The working name "Cadence" is retired by research/03_business_decisions.md Decision 1 (the exact App Store name is held by another developer in five storefronts, and EUTM 019227648 CADENCE, Cadence Design Systems, classes 9 and 42, registered 2026-01-15, covers "Downloadable computer software" without qualification). The recommended replacement is Toque, 5 characters. Every character count in this document is given as base + len(NAME), so a different final name costs an arithmetic re-check and nothing else.

Glossary, first use. ASO = app store optimisation, choosing store metadata so the store's own search ranks the listing. Alarm stream = the Android audio channel your wake-up alarm uses, which has its own volume slider separate from music and notifications. Backstop = the operating-system alarm the app schedules so a timer can still ring if the app itself is not running. Kiosk use = a tablet left on one app, screen on, plugged in.


1. The honesty gate — what may and may not be claimed

1.1 Claim inventory

Every marketing claim in §2 to §5 traces to a row here. A claim not in this table does not appear in the copy. Locations are valid at 03a176e.

# Claim Play (Android) App Store (iOS) Evidence
C1 Several independent timers on one screen, auto-sized grid YES YES lib/ui/home.dart:31, lib/engine/engine.dart:27-28, lib/ui/grid_layout.dart:62-108
C2 One tap starts a saved dish; one tap stops a ringing alarm YES YES lib/ui/tile.dart:372-375home.dart:348,356-363; stop at home.dart:365-374; measured tap counts in findings/S10_product.md §1
C3 Batch cloning of a running dish, three in total YES YES Engine.maxBatch = 3, lib/engine/engine.dart:31,191-200
C4 Multi-step dishes; the next phase is announced YES YES TimerDef.isChain, lib/engine/models.dart:52; lib/i18n.dart stepsLabel
C5 A spoken announcement per dish, written by the user YES YES lib/audio/voice.dart; voicePh = «Les frites sont prêtes» / "The fries are ready", lib/i18n.dart
C6 Twelve distinct ringtones, one per dish YES YES lib/ui/theme.dart:45-48, I18n.toneLabels (12 entries per language), lib/i18n.dart:8-37
C7 Continuous urgency colour on the tile YES YES Theme.fillFor, lib/ui/theme.dart:59-69; pie sweep lib/ui/tile.dart:778-779
C8 Absolute deadlines: sleep, rotation or a restart do not shift the finish time YES YES RunEntry.endsAt, lib/engine/models.dart:97; lib/engine/engine.dart:2-4
C9 The screen stays awake while the app is open YES YES WakelockPlus.enable(), lib/main.dart:28-32
C10 French and English, interface and voice YES YES lib/i18n.dart — two string tables, TTS locales fr-FR / en-US at :166
C11 The ringtone plays on the device alarm stream, not the media stream YES NO MainActivity.kt:43-63 and :122-127 (USAGE_ALARM) are Android-only; ios/Runner/AppDelegate.swift:54-59 returns nil for getAlarmVolume and Dart falls back to app-level gain
C12 The in-app volume slider will not go below 15% YES NO AlarmVolume.floor = 0.15, lib/audio/alarm_volume.dart:28; the floor is asserted against the Android alarm stream, which iOS does not expose
C13 The published build has no INTERNET permission; the OS itself refuses it any connection YES NO — reword android/app/src/main/AndroidManifest.xml:2-17 declares 8 permissions, android.permission.INTERNET is not among them; only src/debug and src/profile add it (:6 in each), and neither ships
C13b The app contains no network code: no account, no ads, no tracker, no analytics YES YES pubspec.yaml:10-21 — 10 dependencies, none is an ads, billing or analytics package; proof/01_findings/S13/network_grep_lib.txt §4
C14 Rings while backgrounded, locked, or after the app is killed NO NO Android: the backstop excludes a run whose status is ringing (lib/alarm_backstop.dart:103-106) and prior work records it «n'a jamais reellement sonne dans ce log» (commit f46d142). iOS: InitializationSettings is constructed with android: only (lib/alarm_backstop.dart:69-76), the plugin throws, _ready stays false and every scheduling path returns — store_readiness/04_ios_blockers.md §2
C15 Loud enough to hear over a working kitchen NO NO Routing to USAGE_ALARM is verified in code; perceived loudness on real hardware is not — no tablet was available to this audit (aso/01_competitors.md §5.2, graded B-unverified). Do not write "loud", "cuts through", "audible over the extraction hood" until §7.3 is run
C16 Export, import, backup, transfer to a second tablet, multi-site rollout NO NO findings/S10_product.md S10-F1: the only export symbol in lib/ is Journal.exportCopy() (lib/journal.dart:207), which shares the diagnostic log, not the timers
C17 Station, owner, shift assignment or a service history NO NO findings/S10_product.md S10-F7 and S10-F12 — TimerDef carries no such field (lib/engine/models.dart:29-49)

1.2 Two claims the copy must state as limits, not hide

Both appear in the "what to know before you install" block of every description. They are in the copy deliberately: the buyer is a business, the audit proves both, and a store review that discovers them after a claim to the contrary is worse than saying them.

  • Timers live on one tablet with no export or backup (C16). A replaced tablet costs a re-entry measured at 116 taps at best and 296 if no duration is a preset, plus 20 typed dish names, for a 20-dish menu (findings/S10_product.md §1, derived from the gesture handlers, not estimated).
  • The app is built to stay on screen during service (C14). Saying this is not a weakness in positioning: kiosk use is exactly how the professional tier works, and Antunes says the same thing about its own iPad app.

1.3 Dependency on aso/02_keywords.md

aso/02_keywords.md did not exist when this document was written. The keyword fields in §2 and §3 are built from evidence already in aso/01_competitors.md — the competitor titles and subtitles captured across 36 listings, the French metadata that every serious competitor pays to write separately, and the two apps that already tried the restaurant positioning. When 02_keywords.md lands, re-check the two keyword fields against its ranked list and nothing else in this document.

No keyword search volume, difficulty score or install estimate appears anywhere in this document, in any form. We own no tool that measures those (AGENT_RULES.md R11), and Apple's autocomplete endpoint returned only the echoed query term in all 18 captures (proof/03_market/captures/aso_apple_autocomplete_*.xml), so it produced no suggestion data either.


2. Apple App Store — French (primary listing)

Do not create this listing yet. §7.4 lists the four conditions that must be true first; one of them is that the app currently paints a permanent red warning banner on iOS, which would appear in every screenshot.

2.1 App name — limit 30 characters — 25 (base 20 + len(NAME))

{NAME} : minuteurs cuisine

2.2 Subtitle — limit 30 characters — 29

Pour restaurants, sans réseau

2.3 Promotional text — limit 170 characters — 156

Editable at any time without submitting a new version, so this is the field that carries news.

Le tableau de minuteurs du coup de feu : un tapotement lance un plat connu, la tuile change de couleur en continu, la tablette annonce le plat à voix haute.

2.4 Keywords — limit 100 bytes97 bytes

Apple's own wording is "up to 100 bytes of content", not characters. In UTF-8 every accented French letter costs 2 bytes, so an accented keyword field measured in characters silently overflows. The field below is deliberately unaccented for that reason. Apple also says not to repeat words that already appear in the app name, the subtitle or the category — so minuteur, cuisine, restaurant and reseau are absent here and earn their ranking from §2.1 and §2.2 instead.

minuterie,chrono,brigade,chef,friteuse,four,passe,vocal,alarme,multi,tablette,service,pro,rebours

2.5 Description — limit 4000 characters — 2202 (base + len(NAME))

Note what is not in this text: no alarm-stream claim, no volume-floor claim, no background or locked-screen ringing, and the no-network line is phrased as "contains no network code" rather than as the operating-system guarantee, because that guarantee is an Android manifest fact (C13 versus C13b).

{NAME} est un tableau de minuteurs pour cuisine professionnelle. Une tablette au passe, posée ou fixée, ouverte pendant tout le service.

Un tapotement lance un plat déjà enregistré. La tuile décompte en gros chiffres, sa couleur évolue en continu jusqu'à l'échéance, la sonnerie choisie pour ce plat se déclenche, et une phrase que vous avez écrite est prononcée à voix haute : « Les frites sont prêtes ».

CE QUE FAIT L'APPLICATION
- Plusieurs minuteurs en parallèle sur un seul écran. La grille se redimensionne d'elle-même selon le nombre de plats.
- Un tapotement pour lancer un plat. Un tapotement pour arrêter la sonnerie : toute la tuile est la cible.
- Lots : dupliquez un plat déjà lancé pour une deuxième ou une troisième poêle, trois en tout.
- Plats en plusieurs étapes : cuisson, retourner, cuisson. Chaque phase décompte et la suivante est annoncée.
- Annonce vocale par plat. Vous écrivez la phrase, la tablette la dit.
- Douze sonneries distinctes, une par plat, pour reconnaître l'alarme sans lever les yeux.
- Échéances absolues. Mise en veille, rotation de l'écran, redémarrage : l'heure de fin ne bouge pas.
- L'écran reste allumé tant que l'application est ouverte.
- Français et anglais, interface et voix.

AUCUNE CONNEXION
L'application ne contient aucun code réseau : pas de compte, pas d'inscription, pas de publicité, pas de traceur, pas de statistique envoyée. Vos plats, vos durées et vos phrases restent sur la tablette.

CE QU'IL FAUT SAVOIR AVANT D'INSTALLER
- L'application est conçue pour rester à l'écran pendant le service, sur une tablette branchée.
- Les minuteurs sont enregistrés sur cette tablette uniquement. Il n'y a ni export, ni import, ni sauvegarde : une tablette remplacée demande de ressaisir la carte.
- Trois lots au maximum par plat.
- Le réglage d'un minuteur en cours se fait par pas de dix secondes.
- L'application est livrée avec sept plats d'exemple. Effacez-les et saisissez les vôtres.

POUR QUI
Restaurant, food-truck, boulangerie, laboratoire de production, comptoir de restauration rapide : partout où plusieurs cuissons courtes tournent en même temps et où le minuteur mécanique et le téléphone ne suffisent plus.

Écrit et maintenu en France.

2.6 The other required App Store fields

Field Value Why
Support URL (required, localisable) https://{DOMAIN}/fr/support Apple: "This URL must lead to actual contact information (legal address, email address, telephone number)". Content owned by the privacy/support agent; page produced under site/, see aso/04_web_seo.md
Privacy Policy URL (required) https://{DOMAIN}/fr/confidentialite Apple: "A URL that links to your company's privacy policy. Required for iOS and macOS apps"
Marketing URL (optional) https://{DOMAIN}/ The landing page in site/index.fr.html
Primary category Food & Drink Where the two apps that already tried this positioning sit (Sous Chef, Thyme, Kitchen Timer+ Voice Controlaso/01_competitors.md §1.1)
Secondary category Productivity The professional half of the category; MultipleTimers+ and Flip Timer sit there
Primary language French research/03_business_decisions.md Decision 5. Safe to pick: Apple states "You can change the primary language at any time" (proof/02_store/captures/asc_ref_app_information.txt), which closes that document's open caution

3. Apple App Store — English (en-GB, second release)

Not a translation of §2. Apple treats each localisation as separate metadata, and every competitor with real French traction ships a distinct French title, subtitle and description (aso/01_competitors.md §1.1).

3.1 App name — limit 30 — 26 (base 21 + len(NAME))

{NAME}: kitchen timer board

3.2 Subtitle — limit 30 — 30

Exactly at the limit. If the final name changes nothing here moves, but re-verify before pasting.

Built for restaurants, offline

3.3 Promotional text — limit 170 — 152

The timer board for the rush: one tap starts a dish you already saved, the tile shifts colour as the clock runs, and the tablet calls the dish out loud.

3.4 Keywords — limit 100 bytes — 96 bytes

kitchen, timer and board are in the name and restaurants and offline in the subtitle, so none of them is repeated here.

multi,chef,brigade,cook,line,prep,fryer,oven,pass,talking,voice,alarm,tablet,service,pro,station

3.5 Description — limit 4000 — 1909 (base + len(NAME))

{NAME} is a timer board for professional kitchens. One tablet at the pass, propped or mounted, open for the whole service.

One tap starts a dish you have already saved. The tile counts down in large digits, its colour shifts continuously towards the deadline, the ringtone you chose for that dish sounds, and a sentence you wrote is spoken out loud: "The fries are ready".

WHAT IT DOES
- Several timers at once on a single screen. The grid resizes itself to the number of dishes.
- One tap to start a dish. One tap to stop the alarm: the whole tile is the target.
- Batches: clone a running dish for a second or a third pan, three in total.
- Multi-step dishes: cook, flip, cook. Each phase counts down and the next one is announced.
- A spoken announcement per dish. You write the sentence, the tablet says it.
- Twelve distinct ringtones, one per dish, so you know which alarm it is without looking up.
- Absolute deadlines. Sleep, screen rotation, a restart: the finish time does not move.
- The screen stays awake while the app is open.
- French and English, interface and voice.

NO CONNECTION
The app contains no network code: no account, no sign-up, no advertising, no tracker, no analytics. Your dishes, your durations and your sentences stay on the tablet.

WHAT TO KNOW BEFORE YOU INSTALL
- The app is built to stay on screen during service, on a tablet that is plugged in.
- Timers are saved on this tablet only. There is no export, no import and no backup: a replaced tablet means retyping the menu.
- Three batches maximum per dish.
- Adjusting a running timer moves it in ten-second steps.
- The app ships with seven example dishes. Delete them and enter your own.

WHO IT IS FOR
Restaurants, food trucks, bakeries, production kitchens and fast-food counters: anywhere several short cooks run at the same time and a mechanical timer or a phone is no longer enough.

Written and maintained in France.

4. Google Play — French (default listing)

4.1 App title — limit 30 characters — 25 (base 20 + len(NAME))

If the final name is longer than 5 characters this still fits up to 10. Above that, drop to {NAME} : minuteurs pro (base 16).

{NAME} : minuteurs cuisine

4.2 Short description — limit 80 characters — 72

Play's own rules for this field, applied: no call to action, no emoji, no special characters, no repeated punctuation, no capitalisation for emphasis, no price or ranking language, and it must not be repeated inside the full description — it is not.

Tableau multi-minuteurs pour la cuisine pro. Aucun réseau, aucun compte.

4.3 Full description — limit 4000 characters — 2739 (base + len(NAME))

Une cuisine qui tourne fait cuire cinq choses à la fois, chacune avec sa propre échéance. {NAME} met ces échéances sur un seul écran, à la vue de toute la brigade.

Un tapotement lance un plat déjà enregistré. La tuile décompte en gros chiffres, sa couleur évolue en continu jusqu'à l'échéance, la sonnerie choisie pour ce plat part sur le flux alarme de la tablette, et une phrase que vous avez écrite est prononcée à voix haute : « Les frites sont prêtes ».

CE QUE FAIT L'APPLICATION
- Plusieurs minuteurs en parallèle sur un seul écran. La grille se redimensionne d'elle-même selon le nombre de plats.
- Un tapotement pour lancer un plat. Un tapotement pour arrêter la sonnerie : toute la tuile est la cible.
- Lots : dupliquez un plat déjà lancé pour une deuxième ou une troisième poêle, trois en tout.
- Plats en plusieurs étapes : cuisson, retourner, cuisson. Chaque phase décompte et la suivante est annoncée.
- Annonce vocale par plat. Vous écrivez la phrase, la tablette la dit.
- Douze sonneries distinctes, une par plat, pour reconnaître l'alarme sans lever les yeux.
- La sonnerie est envoyée sur le flux alarme d'Android, celui du réveil, et non sur le flux multimédia. Le curseur de volume de l'application ne descend pas sous 15 %, pour qu'un réglage laissé à zéro ne rende pas les minuteurs muets.
- Échéances absolues. Mise en veille, rotation de l'écran, redémarrage : l'heure de fin ne bouge pas.
- L'écran reste allumé tant que l'application est ouverte.
- Français et anglais, interface et voix.

AUCUN RÉSEAU, ET PAS SEULEMENT PAR PROMESSE
La version publiée ne demande pas la permission INTERNET d'Android. Ce n'est pas une case à cocher dans les réglages : sans cette permission, le système d'exploitation lui-même refuse toute connexion à l'application. Aucun compte, aucune inscription, aucune publicité, aucun traceur, aucune statistique. Vos plats, vos durées et vos phrases ne quittent pas la tablette, parce que l'application n'a aucun moyen de les envoyer.

CE QU'IL FAUT SAVOIR AVANT D'INSTALLER
- L'application est conçue pour rester à l'écran pendant le service, sur une tablette branchée.
- Les minuteurs sont enregistrés sur cette tablette uniquement. Il n'y a ni export, ni import, ni sauvegarde : une tablette remplacée demande de ressaisir la carte.
- Trois lots au maximum par plat.
- Le réglage d'un minuteur en cours se fait par pas de dix secondes.
- L'application est livrée avec sept plats d'exemple. Effacez-les et saisissez les vôtres.

POUR QUI
Restaurant, food-truck, boulangerie, laboratoire de production, comptoir de restauration rapide : partout où plusieurs cuissons courtes tournent en même temps et où le minuteur mécanique et le téléphone ne suffisent plus.

Écrit et maintenu en France.

5. Google Play — English (en-GB, second release)

5.1 App title — limit 30 — 26 (base 21 + len(NAME))

{NAME}: kitchen timer board

5.2 Short description — limit 80 — 68

Multi-timer board for professional kitchens. No network, no account.

5.3 Full description — limit 4000 — 2396 (base + len(NAME))

A kitchen in service cooks five things at once, each with its own deadline. {NAME} puts those deadlines on one screen, where the whole line can see them.

One tap starts a dish you have already saved. The tile counts down in large digits, its colour shifts continuously towards the deadline, the ringtone you chose for that dish plays on the tablet's alarm stream, and a sentence you wrote is spoken out loud: "The fries are ready".

WHAT IT DOES
- Several timers at once on a single screen. The grid resizes itself to the number of dishes.
- One tap to start a dish. One tap to stop the alarm: the whole tile is the target.
- Batches: clone a running dish for a second or a third pan, three in total.
- Multi-step dishes: cook, flip, cook. Each phase counts down and the next one is announced.
- A spoken announcement per dish. You write the sentence, the tablet says it.
- Twelve distinct ringtones, one per dish, so you know which alarm it is without looking up.
- The ringtone plays on Android's alarm stream, the one your wake-up alarm uses, not the media stream. The app's own volume slider will not go below 15%, so a slider left at zero cannot silence your timers.
- Absolute deadlines. Sleep, screen rotation, a restart: the finish time does not move.
- The screen stays awake while the app is open.
- French and English, interface and voice.

NO NETWORK, AND NOT JUST AS A PROMISE
The published build does not request Android's INTERNET permission. This is not a setting you toggle: without that permission the operating system itself refuses the app any connection. No account, no sign-up, no advertising, no tracker, no analytics. Your dishes, your durations and your sentences never leave the tablet, because the app has no way to send them.

WHAT TO KNOW BEFORE YOU INSTALL
- The app is built to stay on screen during service, on a tablet that is plugged in.
- Timers are saved on this tablet only. There is no export, no import and no backup: a replaced tablet means retyping the menu.
- Three batches maximum per dish.
- Adjusting a running timer moves it in ten-second steps.
- The app ships with seven example dishes. Delete them and enter your own.

WHO IT IS FOR
Restaurants, food trucks, bakeries, production kitchens and fast-food counters: anywhere several short cooks run at the same time and a mechanical timer or a phone is no longer enough.

Written and maintained in France.

5.4 The other required Play fields

Field Value Source of the requirement
App category Food & Drink; tags: kitchen, cooking Play Console → Store settings
Contact email (mandatory) {SUPPORT_EMAIL} on the product domain "An email address is required to publish or update apps on Google Play" — support.google.com/googleplay/android-developer/answer/13634081
Website https://{DOMAIN}/ optional but expected by a business buyer
Privacy policy URL (mandatory, plus a link inside the app) https://{DOMAIN}/fr/confidentialite store_readiness/01_google_play.md §9.1 and §9.3 — the in-app link is required because the app declares USE_EXACT_ALARM and USE_FULL_SCREEN_INTENT
Ads declaration Contains no ads pubspec.yaml:10-21 — no ads dependency
Data safety No data collected, no data shared answers already worked out in store_readiness/01_google_play.md §6

6. Field limits, with the source for each

Every limit below was read out of a stored capture, not from memory. Retrieval date 2026-08-04 for all rows.

Store Field Limit Verbatim source Capture
Apple App name 2–30 characters "The name must be at least two characters and no more than 30 characters." proof/02_store/captures/asc_ref_app_information.txt:147 — https://developer.apple.com/help/app-store-connect/reference/app-information/app-information
Apple App name (policy restatement) 30 characters "App names must be limited to 30 characters." proof/02_store/captures/review_guidelines.txt:165 — https://developer.apple.com/app-store/review/guidelines/
Apple Subtitle 30 characters "This can't be longer than 30 characters." asc_ref_app_information.txt:151
Apple Promotional text 170 characters "This property can't be longer than 170 characters." proof/03_market/captures/aso_apple_help_platform_version_information.txt:169 — https://developer.apple.com/help/app-store-connect/reference/app-information/platform-version-information
Apple Description 4000 characters, plain text, no HTML "Limited to 4000 characters. The description should be in plain text, with line breaks as needed. HTML format isn't supported." same capture, :173
Apple Keywords 100 bytes, comma-separated, no spaces after commas "You can provide up to 100 bytes of content." / "Keywords are limited to 100 characters total, with terms separated by commas and no spaces." same capture :181; and proof/03_market/captures/aso_apple_search_guide.txt:62 — https://developer.apple.com/app-store/search/
Apple Keywords, what not to repeat "Don't repeat any words included in your app name, subtitle, or category." aso_apple_search_guide.txt:62
Apple Support URL required, localisable "This URL must lead to actual contact information (legal address, email address, telephone number)… This property is required and can be localized." aso_apple_help_platform_version_information.txt:189
Apple Privacy Policy URL required for iOS "A URL that links to your company's privacy policy. Required for iOS and macOS apps." asc_ref_app_information.txt (App information table)
Play App title 30 characters or less "Your app title must be 30 characters or less." proof/02_store/captures/gp_metadata_policy_expanded.txt:31 — https://support.google.com/googleplay/android-developer/answer/9898842
Play Short description 80 characters "80 character limit" proof/02_store/captures/gp_graphic_assets_expanded.txt (Short description → Requirements) — https://support.google.com/googleplay/android-developer/answer/9866151
Play Full description 4,000 characters "A full description allows for 4,000 characters." proof/02_store/captures/gp_store_listing_best_practices.txt:50 — https://support.google.com/googleplay/android-developer/answer/9859455

The byte trap, stated once because it silently breaks French listings. Apple's App Store Connect reference says the keyword field takes "up to 100 bytes"; the App Store search guide says "100 characters". Both are Apple, and they disagree. UTF-8 encodes every accented French letter in 2 bytes, so crème,brûlé is 11 characters and 13 bytes. The French keyword field in §2.4 is written without accents and measures 97 bytes, which satisfies both readings. Any edit to it must be re-measured in bytes, not characters.


7. Screenshots, graphics and video

7.1 What each screenshot shows, and its caption

Six screenshots. The order is the argument: what it is, then the one moment that decides the sale (stopping an alarm), then the three professional features no consumer app has, then the honesty close. Every frame is a real capture of the running app — no mock-ups, no invented data. Use a realistic 8-dish French menu, not the shipped seed (findings/S10_product.md S10-F11: the seed is one specific Levantine kitchen's menu, which reads as unfinished software to any other buyer).

# What is on screen Caption, French Caption, English
1 The board mid-service: 8 dishes, 3 counting, three different urgency colours, header clock visible Toute la cuisine sur un seul écran The whole kitchen on one screen
2 One tile ringing, red, counting up; the ± and ✕ row hidden so the whole tile is the target Un tapotement pour arrêter la sonnerie One tap stops the alarm
3 A running dish showing the #2 batch chip, with a second clone already on the board Deuxième poêle : un tapotement Second pan: one tap
4 The editor open on a multi-step dish — Cuisson 6:00 / Retourner 1:30 / Cuisson 6:00 Un plat, plusieurs étapes, annoncées One dish, several steps, called out
5 The editor's voice field showing «Les frites sont prêtes», with the ringtone picker open behind it La tablette annonce le plat à voix haute The tablet calls the dish out loud
6 Settings: language, alarm volume with its 15% floor and the note about silent mode Volume alarme, français ou anglais Alarm volume, French or English

Captions go on the Apple screenshots only. Play's own guidance for large-screen screenshots says "Exclude additional text that is not part of your core app experience, as this can get cut off on Play homepages on certain screen sizes" (proof/02_store/captures/gp_graphic_assets_expanded.txt, Screenshots → Large screens). Play tablet screenshots are therefore clean app captures with no overlay; the captions above become the first-line order of the Play full description instead, which is why §4.3 opens the way it does.

Alt text is required copy too. Play asks for alt text on each graphic, "using 140 characters or less" (same capture). Use the caption plus the frame description from column 2, French for the French listing.

7.2 Exact pixel dimensions

Apple — 1 to 10 screenshots, .jpeg, .jpg or .png, and "Images can't include alpha channels or transparencies". Source: https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications, capture proof/02_store/captures/screenshot_specs.txt, retrieved 2026-08-04T10:54:14Z.

Device class Required? Landscape size to produce Also accepted
iPad 13" Required if the app runs on iPad 2752 × 2064 2732 × 2048 (accepted at 13"; also the 12.9" size, so one file covers both)
iPhone 6.9" Required if the app runs on iPhone 2868 × 1320 2796 × 1290, 2736 × 1260
iPhone 6.5" Required only if 6.9" is not provided 2778 × 1284 or 2688 × 1242
All smaller classes Not required — Apple scales from the sizes above "If screenshots with the accepted sizes aren't provided, scaled screenshots for 6.9" displays are used."

Halve this work with a one-line project change. ios/Runner.xcodeproj/project.pbxproj sets TARGETED_DEVICE_FAMILY = "1,2" at lines 367, 493 and 546 — iPhone and iPad — which is what makes the 6.9" iPhone set mandatory. The product is a wall-mounted kitchen board; a 6.1-inch phone is not the device. Setting TARGETED_DEVICE_FAMILY = "2" makes it iPad-only, drops six iPhone screenshots from every localisation, and stops the App Store offering the app to phone users who will rate it badly. Recommended default, marked for the project owner's ratification (it is a market-positioning call, not a defect). Evidence: proof/03_market/listing_assets_inventory.txt.

Google Play — sources: https://support.google.com/googleplay/android-developer/answer/9866151, capture proof/02_store/captures/gp_graphic_assets_expanded.txt, retrieved 2026-08-04T10:34:01Z.

Asset Requirement, verbatim Produce
App icon "32-bit PNG (with alpha); Dimensions: 512px by 512px; Maximum file size: 1024KB" 512 × 512 PNG, downscaled from assets/icon/ic_legacy.png (1024 × 1024, verified)
Feature graphic "JPEG or 24-bit PNG (no alpha); Dimensions: 1024px by 500px" 1024 × 500, no alpha. Play says avoid pure white, black or dark grey, and keep the focal point centred
Phone screenshots "You must provide a minimum of two screenshots across different device types… Minimum dimension: 320px; Maximum dimension: 3840px. The maximum dimension of your screenshot can't be more than twice as long as the minimum dimension." 2 at 1080 × 1920 (ratio 1.78, inside the 2× rule)
Tablet screenshots (7" and 10") "For Chromebook and tablets, you can add a minimum of 4 screenshots… Upload screenshots between 1,080 and 7,680px. Use a 16:9 aspect ratio for landscape" 6 at 2560 × 1440, landscape, no caption overlay
Screenshots per device type "You can add up to 8 screenshots for each supported device type" 6 is inside the cap
Preview video optional, hosted on YouTube Not for launch. See §7.5

7.3 The one test that must run before any of this is shot

aso/01_competitors.md §6 action 1, restated because it gates this document: three separate reviewers killed competing apps on the words "you can't hear it in a commercial kitchen". The product's whole differentiation is the opposite claim and it is unverified on hardware. Fire three dishes with three different tones within two seconds on the target tablet, in a kitchen, with the extraction running, and record whether all three are heard and all three are named. Until that is done, C15 stays out of the copy and no screenshot caption may imply loudness.

7.4 The four conditions that gate the Apple listing

Do not open an App Store Connect app record for the listing in §2 and §3 until all four are true.

  1. The iOS build exists. No iOS binary has ever been produced (store_readiness/04_ios_blockers.md §0; the app's own ios/Runner/AppDelegate.swift:12-13 says "NOT YET COMPILED — written on Windows, no Xcode available").
  2. The permanent red warning banner is gone. On iOS AlarmBackstop.init() throws, the catch runs Diag.fail('backstop-init', e, isCritical: true) (lib/alarm_backstop.dart:92-95), and Diag.critical drives a full-width red banner reading «⚠️ Alarme de secours indisponible — gardez l'app à l'écran» (lib/ui/home.dart:686, lib/i18n.dart:79). Every iOS screenshot would contain that banner, and Apple's reviewers would see it in the build.
  3. The app icon is the product's icon. ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png is byte-identical to Flutter's stock template artwork — md5 c785f8932297af4acd5f5ccb7630f01c on both the repo file and Flutter 3.44.8's own template copy (proof/03_market/listing_assets_inventory.txt). The cause is pubspec.yaml:35, ios: false in the flutter_launcher_icons config. A placeholder icon is a rejection.
  4. The name is settled and cleared in App Store Connect. One minute of work, and it must precede any asset: open "New App", type the candidate in the Name field, and see whether it is accepted (research/03_business_decisions.md, open item 1 — public search cannot see a name that is merely reserved).

7.5 What does not exist yet

Nothing in the repo is a store asset. git ls-files matching fastlane|screenshot|store|listing|feature_graphic returns exactly two files, both Dart source (lib/engine/store.dart, test/store_test.dart) — proof/03_market/listing_assets_inventory.txt.

Asset Status Nearest existing material
6 Apple iPad 13" screenshots, French does not exist none — requires a running build and a staged 8-dish menu
6 Apple iPad 13" screenshots, English does not exist as above, second localisation
6 Apple iPhone 6.9" screenshots × 2 languages does not exist, and avoidable — see §7.2
6 Play tablet screenshots × 2 languages does not exist
2 Play phone screenshots × 2 languages does not exist
Play feature graphic 1024 × 500 does not exist assets/logo/mark_white.png is 238 × 384 — a logo mark, not a graphic; it cannot be upscaled to 1024 × 500
Play store icon 512 × 512 does not exist as a file, but is one downscale away assets/icon/ic_legacy.png, 1024 × 1024
Apple app icon 1024 × 1024 in the iOS asset catalog exists but is Flutter's placeholder assets/icon/ic_legacy.png is the real artwork; regenerate with dart run flutter_launcher_icons after flipping ios: true
App preview video (Apple) / preview video (Play) does not exist Optional on both stores. Skip for launch: it needs a device screen recording and it is the asset most likely to go stale after the first UI fix
Privacy policy page, French and English does not exist Owned by the privacy/support agent; hosting specified in aso/04_web_seo.md
Support page, French and English does not exist as above
A domain to host any of it does not exist research/03_business_decisions.md Decision 2 recommends registering it now

8. Character count audit

Reproduced by tools/check_listing_counts.py, which parses this file, re-measures every block marked with a <!--copy:…--> comment, and fails on any overflow. Output stored at proof/03_market/listing_copy_counts.txt.

field                 unit   base  +NAME   total  limit  margin  verdict
--------------------------------------------------------------------------
apple_fr_name         chars     20    yes      25     30       5  OK
apple_fr_subtitle     chars     29     no      29     30       1  OK
apple_fr_promo        chars    156     no     156    170      14  OK
apple_fr_keywords     bytes     97     no      97    100       3  OK
apple_fr_description  chars   2202    yes    2207   4000    1793  OK
apple_en_name         chars     21    yes      26     30       4  OK
apple_en_subtitle     chars     30     no      30     30       0  OK
apple_en_promo        chars    152     no     152    170      18  OK
apple_en_keywords     bytes     96     no      96    100       4  OK
apple_en_description  chars   1909    yes    1914   4000    2086  OK
play_fr_title         chars     20    yes      25     30       5  OK
play_fr_short         chars     72     no      72     80       8  OK
play_fr_description   chars   2739    yes    2744   4000    1256  OK
play_en_title         chars     21    yes      26     30       4  OK
play_en_short         chars     68     no      68     80      12  OK
play_en_description   chars   2396    yes    2401   4000    1599  OK

16 fields measured, 0 over limit.
PASS

Every field is inside its limit with the working 5-character name. The two tight ones: the English Apple subtitle sits at exactly 30 of 30, and the French Apple keyword field has 3 bytes of headroom, so neither survives an accented character or an extra word. Re-run the script after any edit, and after the final name is chosen if it is longer than 5 characters (the name-bearing fields have 4 to 5 characters of slack, so a name up to 9 characters still fits every field; at 10 or more, apply the title fallback in §4.1).

04 — Web presence: what the site must host, the pages, and search targets (Phase 3.4)aso/04_web_seo.md · raw .md

04 — Web presence: what the site must host, the pages, and search targets (Phase 3.4)

Produced: 2026-08-04. Subject: the app repository at pinned commit 03a176e72ef0075eec86b8915cbe6e93042a3b9d.

The product name is the substitutable token {NAME} throughout, as in aso/01_competitors.md and aso/03_listing_copy.md.

Deliverables produced by this phase

File What it is
site/index.fr.html The French landing page. Complete, self-contained, ready to deploy.
site/index.html The English landing page. Same.
proof/03_market/site_selfcontained.txt Render plus zero-external-request verification for both pages
proof/03_market/site_render/*.png Both pages rendered at 1440, 820 and 390 pixels wide

1. The site is not optional, and here is exactly why

Three separate requirements make a public website a precondition of publishing, not a marketing extra. All retrieved 2026-08-04. Full source URLs are stamped in the header of each capture file.

# Requirement Verbatim source Capture
1 Apple requires a Support URL on every version, and it must reach real contact details "The URL of the support website you plan to provide for users… This URL must lead to actual contact information (legal address, email address, telephone number)… This property is required and can be localized." proof/03_market/captures/aso_apple_help_platform_version_information.txt:189 (App Store Connect Help, platform version information)
2 Apple requires a Privacy Policy URL "A URL that links to your company's privacy policy. Required for iOS and macOS apps." proof/02_store/captures/asc_ref_app_information.txt (App Store Connect Help, app information)
3 Google requires a privacy policy at a public URL and a link to it inside the app "Your app must post a privacy policy link in the designated field within Play Console, and a privacy policy link or text within the app itself. Please make sure your privacy policy is available on an active, publicly accessible and non-geofenced URL (no PDFs) and is non-editable" proof/02_store/captures/gp_developer_program_policy_expanded.txt:396

A fourth requirement sits one step further back: Apple's organisation enrolment requires a work email on the organisation's own domain and a functional public website on that domain (research/03_business_decisions.md Decision 3, capture proof/02_store/captures/adp_enrollment.txt). Since Decision 3 recommends publishing under a jointly-owned French company with organisation accounts on both stores, the domain and the site come before the developer account, which comes before the app record, which comes before any build upload. The site is the first item on the critical path, not the last.

store_readiness/01_google_play.md records the current state as measured: proof/02_store/repo_state.txt §5 prints NO_PRIVACY_OR_SUPPORT_URL. There is no domain, no site, no support email and no privacy policy anywhere in the repository.


2. What the site must host

Eight pages, four per language. Nothing else. A larger site is a maintenance liability for a two-person team and buys nothing the store listing does not already buy.

Path Language Owner of the text Purpose
/fr/ French this phasesite/index.fr.html The landing page. Used as the Marketing URL and linked from every outreach email
/en/ English this phasesite/index.html Same, English. Also the x-default target
/fr/confidentialite French privacy and support agent Privacy policy. Store metadata (requirements 2 and 3 above)
/en/privacy English privacy and support agent Same
/fr/support French privacy and support agent Support page. Store metadata (requirement 1). Must carry a real email address and, for the Apple field, a legal address and telephone number
/en/support English privacy and support agent Same
/fr/mentions-legales French entity owner (the project owner) French legal notice for a commercial website: publisher identity, registration number, host's name and address. Also carries the Digital Services Act trader details that both stores publish anyway
/en/legal English entity owner (the project owner) Same

The two landing pages already link to all six other pages, in the top navigation and in the footer, at exactly these paths. If the paths change, change them in both HTML files.

Do not host the privacy policy as a PDF. Google's policy names that case specifically: "available on an active, publicly accessible and non-geofenced URL (no PDFs)".


3. Tokens to substitute before deploying

Both HTML files carry brace-delimited tokens so that no unratified fact is baked into a published page. Replace all of them, then run the checks in §7.

Token What it is Recommended value Status
{NAME} Product name Toque research/03_business_decisions.md D1 — recommended, awaiting the project owner's ratification, and the App Store Connect name-field test must run first
{DOMAIN} Bare domain, no protocol toquekitchen.com D2 — recommended, and verified unregistered on 2026-08-04. Also backs the bundle identifier and Apple's organisation enrolment
{PRICE} Sticker price with unit 9,99 € D4 and aso/05_gtm.md §5 — recommended default, marked for the project owner's ratification
{SUPPORT_EMAIL} Support mailbox on the product domain for example bonjour@{DOMAIN} Must sit on the product domain, not a personal Gmail address: Apple's organisation enrolment requires a work email "associated with your organization's domain name"
{ENTITY} Legal seller name the French company from D3 Awaiting incorporation
{ADDRESS} Legal address the company's registered address Published by both stores anyway under the Digital Services Act, so there is nothing to protect by omitting it here
{PHONE} Contact telephone the company's number Google publishes a developer phone number for organisation accounts; Apple's Support URL rule asks for one

4. The landing pages, and the decisions inside them

4.1 Structure, identical in both languages

Header (wordmark, support, privacy, language) → hero → what the app does, six cards → no network → what to know before you install → the hardware → price → contact → footer (legal identity plus a statement that the site tracks nothing).

Three deliberate choices, each of which someone will want to reverse:

  1. The no-network block is a section of its own, one scroll down on a phone. It is the only claim in the product no competitor can match: the release manifest declares 8 permissions and android.permission.INTERNET is not among them (android/app/src/main/AndroidManifest.xml:2-17), while Play's data-safety panel on the one-million-install Kitchen Multi-Timer declares sharing of device identifiers (aso/01_competitors.md §5.2).
  2. "Ce qu'il faut savoir avant d'installer" lists six real limits on the marketing page. No export or backup, three batches, ten-second adjustment steps, two languages, kiosk use, and no iPad build. The buyer is a business that will meet every one of them in week one; a page that hides them converts better and churns worse. It also means the page never contradicts the audit.
  3. No download badges, no screenshots, no testimonials, no counters. Nothing is published yet, there are no users to quote, and aso/01_competitors.md §5.5 records zero social proof as a real weakness — inventing some would breach AGENT_RULES.md R1. Add store badges the day the listings go live; add a customer quote the day a real customer says one.

4.2 What is deliberately absent from the markup

  • No external requests of any kind. No web font, no content-delivery network, no icon library, no image. Verified rather than asserted: rendering each page in headless Chromium produced exactly one request each, the file:// document itself, and zero external requests (proof/03_market/site_selfcontained.txt).
  • No analytics, no tag manager, no cookie banner. A site that measures nothing needs no consent banner, and it is the only version of this site consistent with the product's own claim. The footer says so in one sentence, in both languages.
  • No JavaScript at all. The pages are HTML plus one inline stylesheet.

4.3 The colours are the product's own

The palette is lifted from lib/ui/theme.dart at 03a176e: background #F4EFE4 (C.bg), card #FFFFFF (C.panel), the callout block #E7DED0 (C.tileIdle), ink #1D211E (C.text), accent #E8600F (C.ember), the mint and amber bullet dots #0FA96A and #DD9207 (C.mint, C.amber), and the dark header and footer #191B14 on #EFE8D6 (C.headerBg, C.headerInk). A screenshot of the app will sit on the page without a colour clash, because it is the same palette.

A prefers-color-scheme: dark block is included so the page is not a white rectangle at night on a phone.


5. Search targets and page structure

5.1 The honest frame

No search volume, keyword difficulty or traffic estimate appears in this document. We own no tool that measures those (AGENT_RULES.md R11), and the only free source available, Apple's autocomplete endpoint, returned nothing but the echoed query in all 18 captures (proof/03_market/captures/aso_apple_autocomplete_*.xml). The ranking below is therefore by buyer intent, justified per row, not by measured volume. Anyone who later buys a keyword tool should re-sort this table and keep the intent column.

Web search is also not the acquisition channel for this product — aso/05_gtm.md establishes that restaurants are reached by direct contact. The site's search job is narrower, and worth stating plainly so nobody over-invests: be findable by a chef who was told the name in a kitchen and types it into a browser, and answer the two questions a buyer asks after a demonstration, which are "does it send my data anywhere" and "what does it cost".

5.2 French targets, ranked by buyer intent

Rank Term Why it earns the rank Target page
1 {NAME}, {NAME} cuisine, {NAME} minuteur Word of mouth inside a professional community is the channel (research/03_business_decisions.md D5). A chef who hears the name must land on the right page, in French /fr/
2 minuteur cuisine professionnelle The exact buyer, in the exact words. Chrono Cuisine ships in the United States as Kitchen Station Timers with the subtitle "Multi Timer Cookline" and holds zero ratings; nobody defends this term (aso/01_competitors.md §2) /fr/
3 minuteur restaurant The other phrasing of the same intent. Kitchen Timer by Erich Tropeano carries the App Store subtitle "Multi-timer for restaurants" and has one rating /fr/
4 tableau de minuteurs, multi minuteur tablette Describes the format rather than the venue. The captured French competitor titles use Multi-Minuteur de Cuisine and minuterie de cuisine (aso/01_competitors.md §1.2), so the vocabulary is established /fr/
5 minuteur cuisine sans wifi, application cuisine hors ligne Narrow intent, perfect match. It is the only query where our answer is categorically better than every competitor's /fr/, where the no-network section carries the heading
6 minuteur vocal, minuteur qui parle The spoken-announcement feature. The two consumer voice timers are weak: 1Timer was last updated 2024-08-02, and Kitchen Timer+ Voice Control holds a 1.00 United States rating from one review /fr/
7 {NAME} confidentialité, {NAME} support Navigational, but these are the pages the stores link to, so they must be indexable and must rank for their own name /fr/confidentialite, /fr/support

5.3 English targets

Same intent order, second release: {NAME}, kitchen timer for restaurants, professional kitchen timer app, multi timer board tablet, offline kitchen timer, talking kitchen timer.

5.4 Page structure, as written

One <h1> per page, then <h2> per section. The French landing page as delivered:

Element Text
<title> {NAME} — le tableau de minuteurs des cuisines professionnelles
meta description Un tableau de minuteurs pour la cuisine professionnelle, sur une tablette au passe. Un tapotement lance un plat, la tablette l'annonce à voix haute. Aucun réseau, aucun compte, aucune publicité.
h1 Toutes vos cuissons sur un seul écran.
h2 × 6 Ce que fait l'application · Aucun réseau, et pas seulement par promesse · Ce qu'il faut savoir avant d'installer · Le matériel · Prix · Nous joindre

English: <h1> is Every cook on one screen. and the six <h2> are What the app does · No network, and not just as a promise · What to know before you install · The hardware · Price · Get in touch.

Two things Google's own documentation says, which govern how much to fuss over these strings. On titles: "While there's no limit on how long a <title> element can be, the title link is truncated in Google Search results as needed, typically to fit the device width" (proof/03_market/captures/seo_google_title_link.txt:80). On descriptions: "Snippets are primarily created from the page content itself. However, Google sometimes uses the meta description HTML element if it might give users a more accurate description of the page" (proof/03_market/captures/seo_google_snippet.txt:80). So the meta description is a suggestion, not a lever, and the page body is what matters.

5.5 The bilingual markup, and its source

Both pages carry, inside <head>:

<link rel="canonical"  href="https://{DOMAIN}/fr/">
<link rel="alternate" hreflang="fr"        href="https://{DOMAIN}/fr/">
<link rel="alternate" hreflang="en"        href="https://{DOMAIN}/en/">
<link rel="alternate" hreflang="x-default" href="https://{DOMAIN}/">

Google: "Add <link rel="alternate" hreflang="lang_code"...> elements to your page header to tell Google all of the language and region variants of a page", and "Consider adding a fallback page for unmatched languages… Use the x-default value" (proof/03_market/captures/seo_google_localized_versions.txt:86-96). The same page warns that the tags "must be inside a well-formed <head> section" and that hreflang annotations must not be combined with other attributes in a single <link> tag. Both are respected in the delivered files.

Google also states plainly that it "doesn't use hreflang or the HTML lang attribute to detect the language of a page" (same capture, line 76). The lang="fr" and lang="en" attributes are there for screen readers and browser translation, which is reason enough to keep them.

5.6 Deployment mapping

The files are named for a static host that serves directories. Map them as:

URL File
https://{DOMAIN}/ site/index.html (English, the x-default)
https://{DOMAIN}/en/ site/index.html
https://{DOMAIN}/fr/ site/index.fr.html

Do not auto-redirect by browser language or by internet address. The pages link to each other in the header and the footer, which is what the x-default fallback is designed to support, and an auto-redirect breaks both a French chef researching from abroad and Google's crawler.


6. Hosting requirements

Requirement Why Note
HTTPS with a valid certificate The store fields are opened by a human reviewer; a certificate warning on the privacy policy URL is an avoidable rejection Any static host issues one automatically
Reachable from everywhere, not geofenced Google: "publicly accessible and non-geofenced URL" Rules out anything behind a login or an address allow-list
Stable URLs Both stores hold the URLs as metadata; changing them means editing every listing Pick the eight paths in §2 and keep them
No server-side code needed Two static HTML files, no JavaScript, no database Any static host will do
The domain must be the one behind the developer account email Apple organisation enrolment requires a work email on the organisation's domain research/03_business_decisions.md D2 recommends a .com for exactly this reason

Do not add analytics, a chat widget, a font from a content delivery network, an embedded map or a newsletter form. Each one is an external request that contradicts the product's central claim on the very page that makes the claim, and a visitor who opens the browser's network panel will see it.


7. How to verify before deploying

  1. Substitute every token from §3. grep -o '{[A-Z_]*}' site/*.html must return nothing.
  2. Re-run the render and self-containment check (the script that produced proof/03_market/site_selfcontained.txt): both pages must show zero non-file:// requests.
  3. Look at the three viewport screenshots per page under proof/03_market/site_render/ for layout breaks after substitution — a long product name changes the header row.
  4. Confirm the six pages owned by the privacy and support agent and by the entity owner exist at the exact paths in §2 before entering any URL into App Store Connect or Play Console.

8. Handover

Owned by the privacy and support agent, not by this phase: the text of /fr/confidentialite, /en/privacy, /fr/support and /en/support. This document specifies where they live, that the privacy page may not be a PDF, that the support page must carry a real email address plus the legal address and telephone number Apple asks for, and that the in-app privacy link required by store_readiness/01_google_play.md §9.3 must point at the French page on a French tablet. The content is theirs. Re-use the <head> block, palette and header and footer markup from site/index.fr.html so the four pages look like one site.

Owned by the project owner: the domain registration, the entity details for the legal notice, and the price token.

05 — Business-to-business go-to-market for restaurants (Phase 3.5)aso/05_gtm.md · raw .md

05 — Business-to-business go-to-market for restaurants (Phase 3.5)

Produced: 2026-08-04. Subject: the app repository at pinned commit 03a176e72ef0075eec86b8915cbe6e93042a3b9d. Product name written as the substitutable token {NAME}.

Companion documents: aso/01_competitors.md (the category), aso/03_listing_copy.md (the listing), aso/04_web_seo.md (the site), aso/06_validation.md (the interview script that tests the assumptions below), research/03_business_decisions.md and research/_raw_03_pricing.md (the sourced price evidence), findings/S10_product.md (what the product can and cannot do today).

Glossary, first use. Store commission = the cut Apple or Google takes from every payment made through their billing system. In-app purchase = the store's own payment mechanism inside an app. Merchant of record = the party that legally sells to the customer, issues the receipt and remits the tax. Managed Google Play = Google's channel for distributing an app privately to devices enrolled in a company's device-management system. Custom App Distribution = Apple's equivalent, through Apple Business Manager. Entitlement backend = a server that decides whether a given customer has paid and may use a paid feature.


1. Consumer app-store optimisation is a supporting channel here, not the plan

Stated first because everything else follows from it.

Restaurants do not browse app stores, and the capture set proves the consequence. The most widely deployed professional prep-timer app in the world, Antunes Prep Timer, sits in Google's 100+ install band; its mass-market McDonald's variant reaches 5K+ (aso/01_competitors.md §2, captures aso_play_detail_antunes_prep_timer_en_US.txt, aso_play_detail_mcdonalds_prep_timer_en_US.txt). In the same store, four consumer timer apps have crossed 1M+ installs. The professional tier is not small because its apps are bad; it is small because professional buyers are not in the store's discovery funnel.

Two apps have already taken the exact positioning we would take. Kitchen Timer by Erich Tropeano carries the App Store subtitle "Multi-timer for restaurants" and holds one rating. Chrono Cuisine ships in the United States as Kitchen Station Timers, subtitle "Multi Timer Cookline", at 2,99 €, updated 2026-07-21, with zero ratings in both storefronts (aso/01_competitors.md §2). The niche is identified, unoccupied, and store search has never delivered anyone into it.

So the store has three real jobs: deliver the binary, take the payment, and be the thing a chef checks after a person has already shown them the app. Demand comes from §3.


2. Target segments

2.1 The fit rule, derived from the product rather than from taste

Read out of the audit, not asserted. {NAME} fits a kitchen when all four hold:

Rule Why, from the code
Several short cooks run at once with hard deadlines The board's whole geometry solves for many concurrent tiles (lib/ui/grid_layout.dart:62-108); one tap starts, one tap silences (findings/S10_product.md §1)
The same dish repeats in batches Batch cloning is the one feature no competitor listing advertises (Engine.maxBatch = 3, lib/engine/engine.dart:31)
The menu is small and stable Configuration is measured at 116 taps at best, 296 if no duration is a preset, plus 20 typed names, for a 20-dish menu, and there is no export or backup (findings/S10_product.md §1 and S10-F1)
One site, one tablet is enough Nothing can be copied to a second kitchen; a group would re-type the menu per site (S10-F1)

And it does not fit when any of these hold: the carte changes daily, so the re-entry cost lands every day; the buyer is a multi-site group, so there is no rollout path; the kitchen is standardised on iPad, where no build rings at all (store_readiness/04_ios_blockers.md §1); or the working language of the line is neither French nor English (lib/i18n.dart ships exactly two tables).

2.2 The four segments, in the order to attack them

# Segment Why it is first-order fit The specific objection it will raise
S1 Fast-casual counter with a fryer and a fixed menu — kebab, burger, tacos, friterie, fried-chicken counter Batch cloning maps one-to-one onto a fryer basket. The menu barely changes, so the configuration cost is paid once. Staff turnover is high, and one-tap start plus a spoken call-out survives a new commis with no training "We already have three mechanical timers and they cost nothing" — answered in §4.4
S2 Bakery, viennoiserie or pizzeria with several ovens Several bakes with different deadlines, minute-wide rather than second-critical, which is exactly the tone split the app's own seed encodes: the calm tone for the oven, the loudest for the fryer (lib/engine/store.dart:311-317) "The oven has its own timer" — true for one oven, not for four running different products
S3 Ghost kitchen, dark kitchen, production laboratory Several short cooks on one line, a tablet already present for order screens, and no customer-facing constraint on how the screen looks "Can it talk to our order system?" — no, and it never will; that is the point of §5.4
S4 Bistro with a small carte and one cook on the pass The alternative is literally shouting across a pass. Smallest deal, fastest decision, and one person both uses it and signs for it "I know what I'm doing" — the sale here is the spoken call-out, not the timer

Explicit anti-segments, so nobody wastes a visit: gastronomic restaurants with a daily-changing carte, multi-site groups, iPad kitchens, and brigades working in neither French nor English.


3. The channel plan, in order

Ordered by cost per qualified conversation, cheapest first. Each row names what must be true before it opens.

# Channel What it is Precondition
1 The pilot kitchen and Serge's own network The app's seed data is one real French kitchen's menu in service order (lib/engine/store.dart:296). That kitchen is the proof site, the demonstration venue and the first testimonial Exists today
2 The walk-in circuit, one dense neighbourhood at a time Between services, roughly 15h to 17h, the chef is reachable and the kitchen is quiet. One tablet, one demonstration, three minutes. Script in §4 A tablet with the app and a staged menu, plus the audibility test in aso/03_listing_copy.md §7.3 run first
3 The equipment and supply channel The incumbent we replace is a physical timer that professional suppliers already stock. Nisbets France returns 36 results for "minuteur", and the direct analogue, the triple Hygiplas, sells at 18,79 € excluding VAT (aso/01_competitors.md §3). Kitchen-equipment and tablet-mount resellers reach our buyer weekly and we do not A price, a site, and something to hand a reseller: §5 and aso/04_web_seo.md
4 Culinary schools and apprenticeship centres A cook trained on the board takes it to the next kitchen. The only channel that compounds without spend A stable name and a build that shows no warning banner
5 Professional federations and the trade press Real and reachable, but verify the specific organisation and its editorial calendar before writing anything. No organisation is named here because none was verified in this audit (AGENT_RULES.md R1) Two or three kitchens willing to be named and quoted
6 Store search and consumer app-store optimisation Catches the chef who was told the name and typed it in, and answers the credibility check. Not demand generation — see §1 The listings in aso/03_listing_copy.md

4. The outreach script

4.1 The walk-in, in French

Delivered in person, between services, tablet already showing a board with a menu that looks like theirs. Do not open the app store, do not show a slide, do not leave a brochure.

Bonjour, je ne vous prends que trois minutes. Je fabrique un outil pour les cuisines, et je viens le montrer à des chefs pour savoir s'il tient debout en service.

Voilà : c'est une tablette qu'on pose au passe. Chaque carré, c'est un de vos plats. Vous appuyez une fois, ça part. La couleur change au fur et à mesure. Quand c'est prêt, ça sonne et la tablette le dit à voix haute : « Les frites sont prêtes ». Vous appuyez une fois, ça s'arrête.

Là, deuxième panier du même produit : j'appuie sur le petit chiffre, et j'ai deux minuteurs séparés pour le même plat.

Est-ce que je peux vous poser deux questions ? Aujourd'hui, comment vous suivez vos cuissons quand vous en avez quatre ou cinq en même temps ? Et qu'est-ce qui se passe quand une cuisson passe à la trappe ?

Then stop talking. The two questions are the whole point of the visit; the demonstration buys the right to ask them. The full interview, and the answers that disqualify a kitchen, are in aso/06_validation.md.

4.2 The telephone version, when a walk-in is not possible

Bonjour, je m'appelle {PRENOM}. Je ne vends rien au téléphone, je cherche trois cuisines pour essayer un outil de minuteurs sur tablette. Est-ce que je peux passer dix minutes entre deux services, un jour qui vous arrange ? Je vous montre, vous me dites si c'est utile ou si c'est un gadget. Si c'est un gadget, vous me le dites franchement et je ne reviens pas.

4.3 The follow-up email, sent the same evening

Objet : suite à mon passage — l'outil de minuteurs

Bonjour Chef,

Merci pour les trois minutes de cet après-midi. Comme promis, le lien vers la page qui explique l'outil : https://{DOMAIN}/fr/

Trois choses que vous m'avez demandées :

— L'application ne se connecte à rien. La version publiée ne demande même pas la permission internet, donc rien ne peut sortir de la tablette. Pas de compte, pas de publicité. — Les minuteurs sont enregistrés sur la tablette. Aujourd'hui il n'y a pas encore de sauvegarde ni de transfert vers une deuxième tablette. Je préfère vous le dire tout de suite. — Le prix prévu est de {PRICE} par mois et par établissement, toutes les tablettes comprises.

Si vous voulez l'essayer sur un service, je vous prête une tablette configurée avec votre carte.

Bien à vous, {PRENOM}

4.4 The four objections, and the answer to each

Objection, as a chef says it Answer What it rests on
« On a déjà des minuteurs, ça coûte trois euros. » « Oui, et pour trois cuissons en même temps il vous en faut trois, plus celui que le commis a emporté. Ici tout est sur un écran, et surtout ça vous dit lequel est prêt, à voix haute. Vous n'avez pas à lever les yeux. » The triple Hygiplas at 18,79 € is the honest comparison, and no physical timer speaks (aso/01_competitors.md §3 and §5.2)
« Et mes données, elles vont où ? » « Nulle part. La version Android publiée ne demande pas la permission internet. Ce n'est pas une promesse commerciale, c'est le système qui l'interdit à l'application. » android/app/src/main/AndroidManifest.xml:2-17. The strongest claim we own, and no competitor can match it
« Et si la tablette tombe en panne pendant le service ? » « Vous perdez la carte enregistrée et il faut la ressaisir : il n'y a pas encore de sauvegarde. C'est la première chose que je dois corriger, et je vous le dis avant que vous l'achetiez. » findings/S10_product.md S10-F1. Saying it first is the only version of this answer that survives week two
« C'est combien ? » « {PRICE} par mois pour l'établissement, toutes les tablettes comprises. À comparer à votre ligne de caisse, pas à une application de téléphone. » §5

5. Pricing sheet

5.1 The ladder the price sits in

Every figure is from the vendor's or the supplier's own published page, retrieved 2026-08-04, indexed in proof/03_market/captures/MANIFEST_comp.md and MANIFEST_aso.md.

What a French kitchen already pays Price Capture
Magnetic timer, Nisbets Essentials (DF672) 3,39 € once, excluding VAT aso_hw_nisbets_fr_search_minuteur.txt
Triple timer, Hygiplas (CF915) — the direct analogue 18,79 € once, excluding VAT, reduced from 24,49 € same
Highest consumer timer subscription observed anywhere in the sweep 8,99 €/month, and it buys a developer's whole portfolio, not one timer comp_iap_not_boring_timer.html
SumUp Caisse Plus 39 €/month comp_vendor_sumup_pos.txt
One additional Lightspeed till 49 €/month comp_vendor_lightspeed_restaurant_fr.txt
Square for Restaurants Plus 59 €/month excluding VAT comp_vendor_square_fr_pricing.txt
Lightspeed Restaurant Basic / Core / Pro 89 / 159 / 249 €/month same
Any professional kitchen-timer app with a published price none exists — the sweep covered 9 terms across two Apple storefronts and 6 on Google Play research/_raw_03_pricing.md §1c

5.2 The recommendation

{PRICE} = 9,99 € per month, per restaurant, VAT included, billed by the store, covering every tablet signed into that restaurant's store account. Recommended default — marked for the project owner's ratification. He owns the price (research/03_business_decisions.md D4).

Why this number and not another:

  • It is 26% of the cheapest published professional software line in France (SumUp at 39 €) and 20% of one extra Lightspeed till (49 €). A chef comparing it to the till bill reads it as small.
  • It is above the highest consumer subscription observed (8,99 €/month, and that one was a multi-app bundle), so it does not read as a consumer app.
  • Annualised at 119,88 € per restaurant per year, it sits well above the consumer ceiling of roughly 20 € once, and well below the professional floor of 468 €/year at SumUp's rate.
  • Per store account, not per device, delivers per-site economics with no backend, no user accounts and no licence server — which matters because the app has none of those, and building them is the reason the runner-up model loses (§5.4).

5.3 What the store takes, and what actually arrives

Both stores land on the same 15% for a developer of our size, from their own pages retrieved 2026-08-04:

  • Apple: the standard commission is 30% (Program License Agreement, Schedule 2), reduced to 15% by the Small Business Program, which explicitly covers "developers new to the App Store", up to 1 million USD of proceeds. Enrolment is an action, not automatic. (policy_apple_adp_license_schedule2.txt, policy_apple_smallbiz.txt)
  • Google: from 2026-06-30 in the European Economic Area, the first $1M of annual earnings is charged 10% service fee plus a 5% billing fee, so 15% in total, for subscriptions and paid apps. (policy_google_play_service_fees.txt)

France is a tax-inclusive storefront on Google Play — "all taxes (including VAT) must be included in the price" (comp_policy_google_play_tax_rates.txt). So a 9,99 € sticker includes VAT, and the developer nets:

net  =  S / (1 + v)  ×  (1 − c)
        S = sticker (9,99 €)   v = French standard VAT rate   c = store commission (0.15)

v is deliberately not filled in. Five official sources were tried on 2026-08-04 and none produced a percentage: impots.gouv.fr returned 404 (vat_fr_impots_taux.txt), service-public.gouv.fr/particuliers/vosdroits/F34194 returned 404, the BOFiP page returned 404, entreprendre.service-public.gouv.fr/vosdroits/F23567 rendered with no figure (vat_fr_entreprendre_F23567.txt), and the European Commission's own VAT-rates page states only that a standard rate "must be no less than 15%, but there is no maximum" with no per-country table (vat_eu_rates_2026.txt). The artifact that closes it: any official French tax source stating the standard rate, or the rate shown in the Play Console pricing screen once the account exists. Do not publish a net-revenue figure before then.

5.4 The rejected alternative

Direct business-to-business licensing, invoiced outside the stores, at a materially higher price per site.

It is the strongest alternative and it is how the French market actually sells: Innovorder, L'Addition, Zelty and Popina publish no price at all and sell by quote (research/_raw_03_pricing.md §2). It would avoid the 15% commission entirely and would produce a proper French invoice, which is what a multi-site group's finance function will eventually demand.

It loses on cost to first revenue. It requires an entitlement backend to enforce a licence, an invoicing and VAT process, and per-restaurant sales contact. The app today is 18 Dart source files with shared_preferences for storage, no server, no accounts and no network layer of any kind — and adding a network layer would destroy the single strongest claim in §4.4. Store billing needs none of it: the platform handles payment, VAT collection, renewal, refunds and entitlement.

It is also not the clean commission escape it looks like. Apple guideline 3.1.3(c) exempts an app only "if your app is only sold directly by you to organizations or groups for their employees or students", and continues "Consumer, single user, or family sales must use in-app purchase" — so the exemption breaks the moment one independent chef buys it. Google's Payments policy names "cloud software and services (such as data storage services, business productivity software, and financial management software)" in the list that must use Play billing, and its exclusion list contains no business-to-business carve-out (policy_apple_review_guidelines.txt, policy_google_payments_policy.txt).

Direct licensing becomes right once there is a proven installed base of paying sites to sell into, not before there is one.

Also rejected, more decisively: paid up-front. Of 416 unique apps swept, only 20 non-game apps are paid up-front at all, the best-performing one has 218 ratings, and every kitchen-specific paid app found has zero ratings (research/_raw_03_pricing.md §1a).

5.5 The gap between this price and today's code

There is no billing code in the repository. A grep across lib/, android/app/, ios/Runner/, pubspec.yaml and pubspec.lock for in_app_purchase, purchases_flutter, revenuecat, billing, StoreKit, subscription, entitlement, paywall, premium, stripe and licence_key returns exactly one hit, case .premium: quality = 500 at ios/Runner/AppDelegate.swift:80, a speech-voice quality enum unrelated to payments (research/03_business_decisions.md D4).

The consequence for the go-to-market, put as an instruction rather than a regret: the first cohort cannot be charged through the store at all. Ship free to the first sites deliberately, and treat the free period as the validation instrument — which is exactly what aso/06_validation.md tests. Announce the price during that period so nobody feels switched on later, and take the money when the in-app purchase work lands.


6. How a restaurant actually buys software

6.1 Who decides, and who signs

Two different people, and conflating them is the classic way to lose this sale.

  • The chef decides whether it works. They are the only person who can say whether the alarm is heard over the extraction and whether a commis can use it wet-handed. In most independent kitchens they cannot commit money.
  • The owner or manager signs. In a small independent restaurant this is frequently the same person as the chef, which is why S4 in §2.2 produces the fastest decision in the list, and why S3, usually run by a separate operator, produces the slowest.

Sequence: demonstrate to the chef, let the chef run one real service, then ask the chef to introduce the owner. Never pitch the owner first — an owner who says yes over a chef's head produces a tablet nobody uses.

6.2 Is an invoice required, and what store billing actually delivers

A French business expects a facture with a VAT line, to book the expense and reclaim the VAT. Store billing does not produce one from us: Apple and Google are the merchant of record, so the restaurant receives a store receipt in the store account's name, and our commercial relationship is with the store rather than with the restaurant.

Three practical consequences:

  1. At around ten euros a month this is normal and survivable — it looks like every other subscription the restaurant already buys through an app.
  2. It stops being survivable for a multi-site group, whose finance function will ask for a single invoice covering several sites. That is the point at which §5.4's rejected alternative becomes the right model, and the point at which the export and import gap (S10-F1) has to be closed anyway.
  3. The store account matters commercially, not only technically. "Per restaurant" in §5.2 means "per store account". A kitchen that signs its tablets into the owner's single Apple or Google account gets every tablet covered; a kitchen where each tablet carries its own account pays per tablet. Say this out loud during the sale, and put it on the support page.

This is the assumption in the whole plan with the least evidence behind it, because no French restaurateur has been asked. aso/06_validation.md question 8 asks it directly, and its answer is the one that can force a change of model rather than a change of price.

6.3 The trader consequence the seller cannot avoid

Under the Digital Services Act both stores publish the seller's identity on the product page. Google publishes the legal name, country and developer email, and the full address as soon as the app monetises; for an organisation account it publishes the organisation's address plus a telephone number. Apple lists the personal legal name as the seller for an individual enrolment, and that developer name can never be edited afterwards (research/03_business_decisions.md D3, captures policy_google_play_dsa_trader.txt, policy_apple_asc_set_developer_name.txt). For a product sold to restaurants, a company seller is also simply what the buyer expects to see. This is the commercial half of Decision 3's argument for forming the entity before the first publish.


7. The path to the first 100 sites

Stages, each with the gate that must be cleared before the next one opens. The gates are not ceremony: each is a defect from the audit that would otherwise be discovered by a paying customer.

Stage Sites What happens Gate that must be closed to leave this stage
0. Pilot 1 The kitchen already in the seed data. Real service, real menu, alarms observed The audibility test — three dishes, three tones, two seconds apart, extraction running (aso/03_listing_copy.md §7.3). Until this passes, no loudness claim exists anywhere
1. Validation 3 Three kitchens chosen against the criteria in aso/06_validation.md, interviewed with that script, one service each on a lent tablet The interview's disqualifying answers. If two of three disqualify on the same axis, change the segment before changing the product
2. Free cohort 10 Walk-in circuit in one neighbourhood, §4 script, free because there is no billing code yet (§5.5). Price announced, not charged Export and import of the menu (S10-F1) and confirmation on every destructive action (S10-F2). Ten kitchens will lose a menu between them, and one dropped tablet with no backup ends a site we could otherwise have named publicly
3. First paid 30 In-app purchase built, Small Business Program enrolled, subscription products configured in both consoles The ringing-state backstop hole (S10-F14 row 3) and edit-mode alarm precedence (S10-F3). Charging money for an alarm board turns a missed alarm into a refund conversation
4. Word of mouth and the supply channel 100 Channels 3, 4 and 5 in §3 open. Kitchens willing to be named and quoted Some station signal on a timer (S10-F7), and iOS, if any target kitchen is an iPad kitchen

The arithmetic at 100 sites, stated plainly. 100 × 9,99 € = 999 € per month of sticker revenue before VAT and before the 15% commission, which is 11 988 € per year of sticker. Whether that is worth pursuing is the project owner's call, not this document's; what the number does establish is the shape of the decision. At this price it is a volume business, and the alternative shape — fewer sites at a directly invoiced price closer to the 39-to-49 €/month floor of the professional ladder — is the model in §5.4, which becomes available exactly when the multi-site gap closes. Both roads run through the same engineering item: export and import.


8. Private and business distribution, and when it would change the picture

Three alternative distribution routes exist. None is right today, and each is right in a specific, nameable circumstance.

Route What it requires What it costs When it becomes right
Managed Google Play, private app Each restaurant enrolled in an enterprise device-management system No Play service fee on a privately distributed app, but the restaurant carries the device-management burden Only for a group with an information-technology function. An independent restaurant with one tablet will not enrol in device management to buy a timer (policy_google_managed_play_private.txt)
Apple Custom App Distribution, through Apple Business Manager An Apple Business Manager account on the buyer's side; the app is distributed privately rather than publicly The full 30% under Schedule 3, not zero — worse than the 15% Small Business Program rate on the public store It is a distribution mechanism for confidentiality or per-customer builds, not a commission saving. Never choose it to avoid commission (policy_apple_adp_license_schedule2.txt, policy_apple_custom_apps.txt)
Apple guideline 3.1.3(f), free stand-alone companion A free app with no purchasing and no call to action inside it at all, companioning a paid tool bought elsewhere Genuinely commission-free Only alongside a real paid web product, which does not exist and which would require the network layer §5.4 rejects

The honest summary: these routes change the picture at the multi-site and group stage, and every one of them has a precondition the product does not meet today. Revisit this table at stage 4 of §7, not before.


9. What this plan asks the project owner to ratify

# Decision Recommended default Where the evidence is
1 The price 9,99 € per month per restaurant, VAT included, store-billed §5.2, research/_raw_03_pricing.md
2 Ship the first cohort free, with the price announced Yes — there is no billing code, and the free period is the validation instrument §5.5
3 Segment order S1 fast-casual with a fryer first, S4 bistro second because it signs fastest, S2 bakery third, S3 ghost kitchen last §2.2
4 The multi-site question Do not sell to a group until export and import exist §7 stage 2, S10-F1
5 Consumer app-store optimisation budget Zero beyond the listings already written §1
06 — Customer validation: the script the project owner runs (Phase 3.6)aso/06_validation.md · raw .md

06 — Customer validation: the script the project owner runs (Phase 3.6)

Produced: 2026-08-04. Subject: the app repository at pinned commit 03a176e72ef0075eec86b8915cbe6e93042a3b9d. Product name written as the substitutable token {NAME}; price as {PRICE} (recommended default 9,99 €/month per restaurant, aso/05_gtm.md §5.2, awaiting the project owner's ratification).

No restaurant was contacted, telephoned, emailed or visited to produce this document, and no business is named in it. §2 gives the criteria for choosing three candidates. Inventing three named restaurants would have been a fabrication under AGENT_RULES.md R1, and a name invented here would have been treated downstream as a lead.

What this document is: a script to run, in French, in a kitchen, in one sitting of about twenty minutes plus one lent service. It establishes two things and nothing else — whether a kitchen would pay, and how much. Everything else a visit could produce is a distraction from those two questions.


1. The rules of the exercise

  1. Ask about today before showing anything. Once a chef has seen the board they cannot describe their current behaviour without contaminating it. Section A runs before the tablet comes out of the bag.
  2. Never ask "would you buy this". Everyone says yes. Ask what they do today, what it costs them when it goes wrong, what they already pay for software, and finally whether they will let you leave the tablet. The last one is the only answer that is not free to give.
  3. State the limits out loud, in the interview, before the price. Section D exists for that. A kitchen that walks away when it hears "there is no backup" has saved everyone a month.
  4. Record verbatim, in French. Paraphrase destroys the only evidence this exercise produces. Recording sheet in §7.
  5. One person asks, one person writes, if two people go. A chef will not wait while you type.
  6. Do not defend the product. When a chef objects, write the objection down and ask one follow-up question. Arguing converts an honest interview into a sales call and destroys the data.

2. How to choose the three candidate restaurants

2.1 The shape of the trio

Three kitchens, deliberately from three different segments of aso/05_gtm.md §2.2, so that a shared failure points at the product rather than at one segment:

Slot Segment Why this slot exists
A S1 — fast-casual counter with a fryer and a fixed menu (kebab, burger, tacos, friterie, fried chicken) The best-fit segment. If it fails here it fails everywhere
B S4 — bistro with a small carte and one cook on the pass The fastest signature: the person who uses it also pays for it
C S2 — bakery, viennoiserie or pizzeria with several ovens Tests whether the product works when deadlines are minute-wide rather than second-critical

Do not use the pilot kitchen as one of the three. Its menu is already the app's seed data (lib/engine/store.dart:296), it is already committed, and a friendly answer from it proves nothing. Interview it separately as an existing user if you want its input.

2.2 Hard criteria — a candidate must meet all five

Each one comes from a fit rule in aso/05_gtm.md §2.1, which comes from the code.

# Criterion How to check it before knocking Why
1 At least three or four short cooks run at once at peak Look at the menu board: fried items, grilled items, several products with different times Below three, a mechanical timer at 3,39 € is genuinely sufficient and the honest answer is that they should buy one
2 The menu is small and stable A printed board that has clearly not changed, rather than a daily slate Configuration costs 116 to 296 taps for a 20-dish menu with no export (findings/S10_product.md §1, S10-F1)
3 The decision-maker is on the premises Owner-operated: the person at the pass is the person whose name is on the door Avoids a four-week loop through an absent owner during a validation exercise
4 There is a place for a tablet at the pass, with mains power Visible from the street or the counter The app holds the screen awake all service (lib/main.dart:28-32) and is designed for a plugged-in kiosk
5 The brigade works in French or English Listen for thirty seconds lib/i18n.dart ships exactly two string tables and two speech locales

2.3 Soft criteria — prefer, but do not require

  • Walking distance from each other. Three visits in one afternoon, between 15h and 17h, is one outing rather than three.
  • At most one of the three is a personal contact of Serge's. One warm introduction guarantees one deep, unhurried conversation. Two or three guarantee politeness, which is the failure mode of this whole exercise.
  • Visible turnover of kitchen staff (a hiring notice in the window) — the segment where one-tap start and spoken call-outs are worth the most.
  • Avoid gastronomic restaurants entirely. Daily-changing carte, and the wrong relationship with a beige tablet at the pass.

2.4 Where to find them without inventing anyone

Walk one dense street of the target neighbourhood between services and read the menu boards. That is the whole method, and it doubles as channel 2 of aso/05_gtm.md §3. A map search filtered to fast-food, kebab, burger, pizzeria and boulangerie in one arrondissement produces the same list with opening hours, which is how you find the 15h-to-17h window per candidate. Record the three you pick, with the criteria they met, in the sheet in §7 — that record is what makes the result auditable later.


3. Before the visit: the kit

Item Why it must be ready Source
A tablet running the app, with a menu that resembles theirs — six to eight dishes, their vocabulary, their durations Showing them another kitchen's seven dishes reads as unfinished software (S10-F11) findings/S10_product.md
The audibility test already run in a real kitchen: three dishes, three tones, fired within two seconds, extraction on The product's central claim is unverified on hardware. Do not carry an unverified claim into a chef's kitchen aso/01_competitors.md §5.2, aso/03_listing_copy.md §7.3
A charger and a way to prop the tablet up Criterion 4 above, and the demonstration needs to stand up on its own
A printed one-page recording sheet, or a second person with a notebook Rule 4 §7
Nothing else. No brochure, no slide, no price list on paper A price on paper starts a negotiation before the product has been seen

4. The interview, in order

Twenty-one questions. Sections A to E are asked in this order every time; the order is the instrument.

Section A — Today, before the tablet comes out (Q1 to Q8)

Q1. « Au pic du service, vous avez combien de cuissons qui tournent en même temps ? » Q2. « Comment vous les suivez, concrètement ? Montrez-moi. » Q3. « Il y a combien de minuteurs dans la cuisine, là, maintenant ? Ils sont où ? » Q4. « La dernière fois qu'une cuisson est passée à la trappe, c'était quand ? Il s'est passé quoi ? » Q5. « Ça vous arrive combien de fois par semaine, à peu près ? » Q6. « Votre carte, elle change tous les combien ? » Q7. « Vous êtes combien en cuisine au pic, et vous travaillez en quelle langue ? » Q8. « Qui décide d'acheter un outil comme ça ici ? Et qui signe ? »

Q2 is the most important question in the document. The answer is either a physical object they can point at, or "de tête", and those two answers lead to different conversations. Q4 and Q5 price the problem in their words, not ours — never supply a number for them.

Section B — The demonstration, three minutes

Run the walk-in script verbatim from aso/05_gtm.md §4.1. Start a dish, let it ring, silence it with one tap, add a batch. Then put the tablet down and stop talking.

Section C — Reaction (Q9 to Q12)

Q9. « Qu'est-ce qui vous gêne là-dedans ? » Q10. « Sur votre ligne, ça remplacerait quoi exactement ? » Q11. « Qui appuierait dessus : vous, ou le commis ? » Q12. « Vous la mettriez où, la tablette ? Il y a une prise ? »

Q9 asks for the objection first, deliberately. A chef given permission to criticise says the true thing; a chef asked "what do you think?" says "c'est pas mal".

Section D — The limits, said out loud (Q13 to Q16)

Read each one as a statement, then ask the question. Watch the face, not the answer.

Q13. « Aujourd'hui il n'y a pas de sauvegarde : si la tablette tombe en panne ou disparaît, il faut ressaisir toute la carte à la main. C'est bloquant pour vous ? » Q14. « Elle doit rester allumée, à l'écran, pendant tout le service. Vous pouvez faire ça ? » Q15. « C'est Android, il n'y a pas encore de version iPad. Vous avez quoi comme tablette, ou vous en achèteriez une ? » Q16. « Un plat peut être dupliqué trois fois maximum. Sur votre friteuse, ça suffit ? »

Q13 is the disclosure that decides whether this validation is honest. Q16 targets the batch cap of three (Engine.maxBatch = 3, lib/engine/engine.dart:31), which a four-basket fryer will hit immediately (S10-F10).

Section E — Price, last (Q17 to Q21)

Never before Section D.

Q17. « Vous payez combien par mois pour votre caisse, tout compris ? » Q18. « Pour un outil comme celui-là, quel prix par mois vous paraîtrait normal, pour tout l'établissement ? » (Write the number down before saying anything.) Q19. « Le prix prévu, c'est {PRICE} par mois pour l'établissement, toutes les tablettes comprises. Qu'est-ce que vous en pensez ? » Q20. « Si je vous le laisse un mois, et qu'après je vous demande {PRICE} par mois, vous continuez ou vous arrêtez ? » Q21. « Vous auriez besoin d'une facture au nom de la société, ou un reçu du magasin d'applications passe chez votre comptable ? »

Q17 before Q18 anchors them on their own software bill rather than on the price of a phone app; the professional ladder in aso/05_gtm.md §5.1 is the reason. Q18 before Q19 captures their number uncontaminated by ours, and the gap between the two is the single most useful figure the whole exercise produces. Q21 is the invoice question referenced from aso/05_gtm.md §6.2; it is the assumption in the entire commercial plan with the least evidence behind it, because store billing makes Apple or Google the merchant of record and the restaurant never receives a French invoice from us.

Section F — The commitment (Q22)

« Est-ce que vous voulez l'essayer sur un service, avec votre carte à vous ? Je configure et je vous prête la tablette. »

This is the only question whose answer costs the chef something. It outranks every enthusiastic answer in Sections C and E.


5. The disqualifying answers

Binary. If any row in the first table is triggered, the kitchen is not a validation candidate and the visit stops being an interview and becomes a polite coffee.

Question Disqualifying answer Why it is fatal
Q1 « Une ou deux, jamais plus. » A mechanical timer at 3,39 € is genuinely sufficient. Selling here is selling badly
Q6 « Elle change tous les jours. » Configuration is 116 to 296 taps with no export; a daily menu means paying that cost daily (S10-F1)
Q7 The brigade works in neither French nor English Two string tables, two speech locales (lib/i18n.dart)
Q12 « Il n'y a pas de place, et pas de prise. » The product is a plugged-in kiosk (lib/main.dart:28-32)
Q13 « Sans sauvegarde, c'est mort. » and they do not move off it The honest answer is that they are right, and S10-F1 is the first gate in aso/05_gtm.md §7
Q14 « On ne peut pas laisser un écran allumé au passe. » Every alarm claim in the product depends on the app being on screen (S10-F14)
Q15 « On est équipés en iPad, on ne changera pas. » No iOS build rings at all (store_readiness/04_ios_blockers.md §1)
Q22 « Non, laissez-moi votre numéro. » after an enthusiastic Section C Enthusiasm that will not accept a free tablet for one service is politeness, not demand

Answers that are not disqualifications but change what happens next:

Answer What it means What to do
« Il m'en faudrait sur quatre sites. » The best possible answer commercially, and unusable today: nothing can be copied to a second kitchen Record it, do not sell, park the site until export and import exist (aso/05_gtm.md §7 stage 2)
« Seulement si ça parle à ma caisse. » Asking for an integration that requires a network layer, which would destroy the strongest claim in the product Disqualify for this product; record the request
Q18 answer far below {PRICE} Their number, honestly given Two of three saying this is a price signal. One of three is a segment signal
Q18 answer far above {PRICE} We may be under-pricing Record verbatim. Do not raise the price on one answer
Q21: « Il me faut une facture au nom de la SARL. » Store billing does not produce one If two of three say this, the store-billing model in aso/05_gtm.md §5.2 is in question, not the price
Q16: « Trois, ça ne suffit pas, j'ai quatre paniers. » The batch cap is a real constraint in the best-fit segment Record. It moves S10-F10 from a reported product decision to a segment blocker

6. The one-service trial, when Q22 is a yes

The interview establishes intent. One service establishes truth. Protocol, so the three trials are comparable:

  1. Configure their real menu with them, on their counter, and time it. The tap count in findings/S10_product.md §1 is derived from code; this is the field measurement of the same thing, and it is the number that decides how urgent export and import are.
  2. Leave. Do not stand in the kitchen during service. An observed kitchen is not a kitchen.
  3. Come back at the end of the service and ask exactly four questions, before any discussion: - « Combien de fois ça a sonné sans que personne l'entende ? » - « Est-ce que quelqu'un a appuyé sur quelque chose par erreur ? Quoi ? » - « Est-ce que vous avez arrêté de vous en servir en cours de service ? À quel moment ? » - « Demain, vous la rallumez ou vous reprenez vos minuteurs ? »
  4. Look at the tablet before you leave with it. Does the board still hold the menu you entered, or has a dish disappeared? S10-F2 says every destructive action is one unconfirmed tap with no undo, so a missing dish is a measurement, not an accident.
  5. Export the journal through Settings → 📤 (lib/ui/modals.dart:698-717). It records starts, stops, resets, batches and every critical failure, and it is the only objective record of what the service actually did.

7. Recording sheet

One per kitchen. Fill it in on the spot, in French, verbatim. When the project owner has run the interviews, the completed sheets go into a new file aso/06_validation_results.md, with the outcomes recorded exactly as given and nothing smoothed.

KITCHEN ___ of 3        DATE ____________        SEGMENT  S1 / S2 / S4
Chosen because (hard criteria 1-5 met):
Person interviewed — role:                        Owner present: yes / no

A. TODAY
Q1  cuissons simultanées au pic .............
Q2  comment suivi aujourd'hui (verbatim) ....
Q3  minuteurs présents, où ..................
Q4  dernier raté (verbatim) .................
Q5  fréquence par semaine ...................
Q6  fréquence de changement de carte ........
Q7  effectif au pic / langue .................
Q8  qui décide / qui signe ...................

C. RÉACTION
Q9  ce qui gêne (verbatim) ...................
Q10 ça remplacerait quoi ....................
Q11 qui appuierait ..........................
Q12 emplacement / prise .....................

D. LIMITES
Q13 sauvegarde absente — bloquant ? .........
Q14 écran allumé tout le service ? ..........
Q15 Android vs iPad .........................
Q16 3 lots suffisants ? .....................

E. PRIX
Q17 coût mensuel de la caisse ...............
Q18 prix jugé normal (AVANT annonce) ........
Q19 réaction à {PRICE} (verbatim) ...........
Q20 continue après un mois d'essai ? ........
Q21 facture société ou reçu du magasin ? ....

F. ENGAGEMENT
Q22 accepte l'essai sur un service ? ........   date de l'essai ..........

DISQUALIFIED: yes / no      Which row of §5: ..........
VERDICT (one line, binary):

8. How to read the three results

Binary decision rules, fixed before the data arrives so the data cannot be read to taste.

Pattern across the three kitchens Verdict What follows
Two or three say yes to Q22, run the service, and rally the next day (Q20 "je continue") VALIDATED at {PRICE} Proceed to aso/05_gtm.md §7 stage 2, and close the export/import gate before the tenth site
Two or three accept the trial but stop using it mid-service (trial question 3) NOT VALIDATED — product The reason given in trial question 3 is the next thing to fix. It is a defect list, not a pricing problem
Two or three disqualify on the same row of §5 NOT VALIDATED — segment or gate If the row is Q13 or Q14, it is a gate in aso/05_gtm.md §7. If it is Q1, Q6 or Q12, the segment choice in §2.1 was wrong; re-pick and re-run
All three accept the trial, and Q18 clusters far below {PRICE} VALIDATED as a product, NOT at this price The price is the project owner's call. Bring him the three Q18 numbers verbatim, not an average
All three refuse Q22 after a warm Section C NOT VALIDATED — demand Warmth without commitment is the classic false positive. Do not build; re-pick the segment
Fewer than three interviews completed INCOMPLETE Not a verdict. Run the third

9. What this exercise cannot settle, and what would

Named so that nobody mistakes these for gaps in the script.

Question Why the interview cannot settle it What settles it
Whether the alarm is audible over a working extraction hood A chef in a quiet kitchen at 16h will say yes to anything that makes a noise The audibility test in aso/03_listing_copy.md §7.3, run in their kitchen during their service, with the result written down
Whether the store-billing receipt survives a French accountant The chef is not the accountant Q21 across three kitchens, then one conversation with an accountant if two of three hesitate
Whether a group of several sites would buy Nothing can be rolled out to a second site today Not answerable until export and import exist. Do not ask a group
What the churn rate is after month two Three interviews and one service cannot measure retention The stage-2 free cohort of ten in aso/05_gtm.md §7, which is the first population large enough to show it