Skip to content

Commit 1ce76e4

Browse files
committed
product-wiki: answer the Safari question; verify the same pass's own citation fixes
Second half of the 2026-07-26 wiki-growth pass (dispatch #739), continuing on the branch the first half had pushed without opening a PR. Competitors — closed the one open question still answerable after the Chrome Web Store 403 wall: "does the Safari picture differ?" It does not, and leans further from structured extraction. Smart Calendars AI (the one event-capture extension spanning Chrome and Safari) describes itself as text and image recognition, never schema.org; Calendly's Safari extension is scheduling-only; the App Store's event tools (EventShot, Screenshots to Calendar) are screenshot-to-event apps, not extensions; and Apple's own date-to-Calendar path is Data Detectors, documented for Mac document apps rather than Safari page markup. So the per-site structured-extraction niche is open on Safari too. Surfaced a follow-up on the screenshot/OCR input axis as a positioning question, and recorded the 403 evidence caveat rather than overstating it. Verified the first half's own replacement citations and corrected two that pointed at the wrong place — a re-derivation this pass could do cheaply because the Context asked for a staleness spot-check: - The JSON-LD-over-DOM stance lives in the gcec pack RULES.md *architecture rules of the road*, not *Codebase gotchas* (only "supported host is not an event" is in Codebase gotchas). Fixed in Domain and Market. - The ctz unanimity rule is not in RULES.md at all — its home is the contract header of extension/event-extractors/helpers/derive-timezone.js. Fixed in Domain and Users, quoting the contract's actual terms (two independent hints must agree; a trailing Z is not a hint) so the claim is checkable. Market: qualified "machine-readable markup is increasingly common", true page-wide but overstated for event pages — cited the ~41%/~26%/<1M-domains figures here rather than leaving them only in Domain. Users: reading the ctz contract yielded a user-side implication — refusing to guess makes a *missing* timezone the expected complaint shape, not a wrong one — added as an open question for real feedback. Note for a human: product-wiki/product-requirements/README.md carries the same dead dev/procedures/technicalGotchas.md citation, and this worker must not write that folder — filed as a repo issue instead. Every new claim is cited in its page's ## Sources; one dated ## Growth log entry per touched page. World sweep: 0 blocking, 11 advisory (all pre-existing). Refs #692 Refs #739 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent 05fd5f3 commit 1ce76e4

4 files changed

Lines changed: 114 additions & 22 deletions

File tree

product-wiki/Competitors/README.md

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,27 @@ extension).
4343
right-click-selection or scheduling tools, not per-site structured extractors.
4444
No JSON-LD/microdata-aware competitor surfaced on Firefox/Edge either, so the
4545
structured-extraction niche is open cross-browser too, not just on Chrome.
46+
- **Safari, checked 2026-07-26, does not differ — and if anything leans further
47+
from structured extraction.** Three layers, none of them a per-site markup
48+
reader: (1) *browser extensions* — Smart Calendars AI is the one genuine
49+
event-capture extension spanning Chrome and Safari, and its own description
50+
puts it on **text and image recognition** plus select-text-on-a-page capture,
51+
never schema.org/JSON-LD; Calendly ships a Safari extension through the Mac App
52+
Store, but it is a scheduling-link tool, not an extractor. (2) *Standalone App
53+
Store apps taking the image route* — EventShot (Image To Calendar) and
54+
Screenshots to Calendar both turn a **screenshot** into an event (title, date,
55+
time, location; the latter also claims recurring-event and
56+
multiple-events-per-image detection). (3) *Apple's own OS-level path* is **Data
57+
Detectors**, which recognises dates in text and offers to create a Calendar
58+
event — but Apple documents it for Mac document apps (Mail, TextEdit, Preview),
59+
not as a Safari webpage-markup feature. So the structured-extraction niche is
60+
open on Safari too, and the Safari-native centre of gravity is OCR/text
61+
detection — the opposite end of the ladder from JSON-LD.
62+
- **Screenshot/OCR capture is emerging as a distinct input axis.** Eventy already
63+
advertised flyer/poster/screenshot input; the Safari scan turned up two more
64+
image-first tools. This project has no answer to it by design — it reads the
65+
page's markup, and a screenshot has none — but the two approaches fail on
66+
opposite inputs, so this is a positioning question rather than a feature gap.
4667

4768
## Open questions (for the next growth pass)
4869

@@ -56,10 +77,20 @@ extension).
5677
will just burn the next pass's budget.
5778
- Is there a competitor doing per-site *structured* extraction (JSON-LD/microdata
5879
aware) rather than generic AI-on-raw-text? Still none found — now checked across
59-
Chrome, Firefox, and Edge (see the cross-browser note above). Worth periodic
60-
re-checks, since that's closest to this project's approach.
61-
- Safari-native tools weren't reachable in this pass (no store scan) — a later
62-
cycle should confirm whether the Safari picture differs from Chrome/Firefox.
80+
Chrome, Firefox, Edge, **and Safari** (see the cross-browser and Safari notes
81+
above). Worth periodic re-checks, since that's closest to this project's
82+
approach.
83+
- ~~Safari-native tools weren't reachable in this pass (no store scan).~~
84+
**Answered 2026-07-26** — see the Safari bullet under Positioning takeaways: the
85+
picture does not differ, and skews to OCR/text detection. Evidence caveat: the
86+
same 403 wall that blocked the install-count question also blocked direct
87+
fetches of the App Store and vendor listings, so the Safari findings rest on
88+
search-result summaries of those listings rather than the listings read end to
89+
end. A pass with a working fetcher should confirm the two image-first apps.
90+
- Does the image/screenshot input axis (Eventy, EventShot, Screenshots to
91+
Calendar) draw users this project would otherwise reach, or is it serving a
92+
genuinely different moment — a photographed poster, not a page you're reading?
93+
Surfaced 2026-07-26.
6394

6495
## Sources
6596

@@ -72,6 +103,12 @@ extension).
72103
- [20 Best Google Calendar Extensions for Chrome (SavvyCal)](https://savvycal.com/articles/google-calendar-extension/)
73104
- [Create a Google Calendar Event — Firefox Browser Add-ons](https://addons.mozilla.org/en-US/firefox/addon/create-a-google-calendar-event/)
74105
- [Checker Plus for Google Calendar — Firefox Browser Add-ons](https://addons.mozilla.org/en-US/firefox/addon/checker-plus-for-calendar/)
106+
- [Calendly: Browser Extension — Mac App Store](https://apps.apple.com/us/app/calendly-browser-extension/id6746816242?mt=12) — the Safari extension is a scheduling-link tool, not an extractor
107+
- [How to install Calendly for Safari — Calendly Help](https://calendly.com/help/how-to-install-calendly-for-safari)
108+
- [EventShot — Image To Calendar (App Store)](https://apps.apple.com/us/app/-/id6747011235) — screenshot → event
109+
- [Screenshots to Calendar (App Store)](https://apps.apple.com/app/id6757425886) — screenshot → event, incl. recurring and multi-event images
110+
- [Detect dates, contacts, and more in documents on Mac — Apple Support](https://support.apple.com/guide/mac-help/detect-dates-contacts-documents-mac-mh35744/mac) — Data Detectors, Apple's OS-level date→Calendar path
111+
- [Safari Extensions — Apple Developer](https://developer.apple.com/safari/extensions/)
75112

76113
## Growth log
77114

@@ -87,3 +124,14 @@ extension).
87124
chrome-stats.com both refuse the growth worker's fetcher (HTTP 403), so no
88125
traction numbers were obtainable this pass. Noted in the open question so the
89126
next run tries a different route. No competitor-landscape claims changed.
127+
- **2026-07-26 (same pass, second half)** — closed the "Safari still unchecked"
128+
question, the one open question this page could still answer without the blocked
129+
hosts. Safari has no per-site structured extractor either: Smart Calendars AI
130+
(Chrome + Safari) is text/image recognition, Calendly's Safari extension is
131+
scheduling-only, the App Store's event tools (EventShot, Screenshots to
132+
Calendar) are screenshot-to-event apps rather than browser extensions, and
133+
Apple's own date→Calendar path is Data Detectors, an OS text feature documented
134+
for document apps rather than Safari page markup. Added the Safari and
135+
screenshot/OCR bullets with six sources, recorded the same 403 evidence caveat,
136+
and surfaced a follow-up on whether the image-input axis competes for the same
137+
moment.

product-wiki/Domain/README.md

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ the knowledge that most directly drives extraction requirements.
1212
## Machine-readable event formats (as of 2026-07-16)
1313

1414
Ordered roughly by how useful they are to a rule-based extractor — highest-signal
15-
first. The project's stance (see the *Codebase gotchas* section of
16-
`.claudinite/local/packs/gcec/RULES.md` — the `dev/procedures/technicalGotchas.md`
17-
this page previously cited was superseded when that doc was folded into the gcec
18-
pack) is to **prefer machine-readable markup over brittle DOM scraping**, because
19-
it survives redesigns and single-page-app rendering.
15+
first. The project's stance (see the **architecture rules of the road** section of
16+
`.claudinite/local/packs/gcec/RULES.md`, where it reads "prefer extracting
17+
JSON-LD/`og:` (which apps still inject) over brittle DOM positions" — the
18+
`dev/procedures/technicalGotchas.md` this page previously cited was superseded
19+
when that doc was folded into the gcec pack) is to **prefer machine-readable
20+
markup over brittle DOM scraping**, because it survives redesigns and
21+
single-page-app rendering.
2022

2123
- **schema.org `Event` as JSON-LD** — the highest-value target and the one Google
2224
actively rewards. Emitted as a standalone `<script type="application/ld+json">`
@@ -80,8 +82,15 @@ structural decision behind "one button per event":
8082

8183
## Timezone & recurrence semantics
8284

83-
- **Timezone** is the trust-critical field: a wrong `ctz` is worse than none
84-
(`derive-timezone.js`'s unanimity rule). The domain gives three shapes — an
85+
- **Timezone** is the trust-critical field: a wrong `ctz` is worse than none —
86+
the unanimity rule, stated in the contract header of
87+
`extension/event-extractors/helpers/derive-timezone.js` itself (not in the gcec
88+
pack's RULES.md): a zone is returned **only when two independent page-declared
89+
hints agree**, and `""` whenever anything disagrees. The four hint kinds that
90+
file recognises are *stated* (an IANA zone in inline-script JSON), *offset* (the
91+
event's own UTC offset — a trailing `Z` explicitly does **not** count, since
92+
pages habitually serialize in UTC regardless of venue), *country*, and *locale*.
93+
The domain gives three shapes — an
8594
**offset-bearing** instant (ISO-8601 `…+02:00`, or `.ics` `Z`/`TZID`), a
8695
**floating** time (no zone; "same wall-clock everywhere"), and **no time signal
8796
at all**. Only the first lets `ctz` be *derived* rather than guessed.
@@ -198,3 +207,12 @@ structural decision behind "one button per event":
198207
this page carried: `dev/procedures/technicalGotchas.md` no longer exists — its
199208
content moved into the gcec pack's `RULES.md` *Codebase gotchas* section — and
200209
`derive-timezone.js` lives at `extension/event-extractors/helpers/`.
210+
- **2026-07-26 (same pass, second half)** — verified the replacement citations
211+
written earlier the same day and corrected two of them: the JSON-LD-over-DOM
212+
stance lives in RULES.md's **architecture rules of the road**, not *Codebase
213+
gotchas* (only the "supported host ≠ an event" rule is in *Codebase gotchas*),
214+
and the `ctz` unanimity rule is **not in RULES.md at all** — its home is the
215+
contract header of `extension/event-extractors/helpers/derive-timezone.js`.
216+
Quoted that contract's actual terms (two independent hints must agree; a
217+
trailing `Z` is not a hint) so the claim is checkable rather than a pointer to
218+
the wrong section.

product-wiki/Market/README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,18 @@ recur across the market:
5353

5454
- **Single-event pages** — a venue, a talk, a concert; one clear event, often with
5555
`schema.org`/JSON-LD event markup (the highest-signal, most future-proof
56-
extraction target — see the JSON-LD note in the *Codebase gotchas* section of
57-
`.claudinite/local/packs/gcec/RULES.md`; the `technicalGotchas.md` this line
58-
previously cited was superseded when that doc was folded into the gcec pack).
56+
extraction target — see the JSON-LD note in the **architecture rules of the
57+
road** section of `.claudinite/local/packs/gcec/RULES.md`; the
58+
`technicalGotchas.md` this line previously cited was superseded when that doc
59+
was folded into the gcec pack).
5960
Machine-readable markup is increasingly common because search engines reward it
6061
(Google's "Events" rich results), which is a structural tailwind for any
61-
extension that prefers JSON-LD/`og:` over brittle DOM scraping.
62+
extension that prefers JSON-LD/`og:` over brittle DOM scraping — but "common" is
63+
a *page-wide* fact, not an event-specific one, and this line overstated it until
64+
2026-07-26: JSON-LD reaches ~41% of pages and Microdata ~26%, while
65+
`schema.org/Event` specifically is on fewer than ~1M domains. The tailwind is
66+
real; it does not mean most event pages are structured. See
67+
[`../Domain/`](../Domain/README.md)'s format ranking.
6268
- **Listing/series pages** — a calendar-of-events page with several entries; the
6369
extension already special-cases "one button per event" for this shape (see
6470
`product-requirements/README.md` requirement 4).
@@ -98,6 +104,8 @@ recur across the market:
98104
- [Calendar Applications Market Research Report 2034 (Dataintelo)](https://dataintelo.com/report/calendar-applications-market)
99105
- [ics2gcal — import .ics into Google Calendar (GitHub)](https://github.com/fmeum/ics2gcal)
100106
- [ICS to GCal — Chrome Web Store](https://chromewebstore.google.com/detail/ics-to-gcal/ljobcbehhifehkmamikmchekbbljopao)
107+
- [Structured data — 2024 Web Almanac (HTTP Archive)](https://almanac.httparchive.org/en/2024/structured-data) — the ~41% JSON-LD / ~26% Microdata page-wide figures
108+
- [Announcing the Schema.org usage statistics dataset (blog.schema.org, 2026)](https://blog.schema.org/2026/06/04/announcing-the-schema-org-usage-statistics-dataset/)`schema.org/Event` on fewer than ~1M domains
101109

102110
## Growth log
103111

@@ -112,3 +120,8 @@ recur across the market:
112120
*Codebase gotchas* section), and cross-linked the JSON-LD-prevalence open
113121
question to the answer Domain already recorded on 2026-07-17, leaving only the
114122
per-target-host split open here.
123+
- **2026-07-26 (same pass, second half)** — pointed the RULES.md citation at the
124+
right section (**architecture rules of the road**, not *Codebase gotchas*), and
125+
qualified the "machine-readable markup is increasingly common" claim, which was
126+
true page-wide but overstated for *event* pages specifically — cited the ~41% /
127+
~26% / <1M-domains figures here rather than leaving them only in Domain.

product-wiki/Users/README.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,17 @@ never silently overwrite.
4949
fallback-coverage routine (`.claudinite/local/packs/gcec/tasks/fallback-extractor-improvements/`) is the
5050
engineering mechanism that narrows this over time; this wiki tracks it from the
5151
*user* side (which misses actually get reported/matter).
52-
- Timezone correctness on pages that don't declare one clearly — see
53-
`extension/event-extractors/helpers/derive-timezone.js`'s unanimity rule, now
54-
documented in the *Codebase gotchas* section of
55-
`.claudinite/local/packs/gcec/RULES.md` (the `technicalGotchas.md` this line
56-
previously cited was superseded when that doc was folded into the gcec pack);
57-
a wrong `ctz` is a trust-breaking failure mode worth watching from the user's
58-
perspective.
52+
- Timezone correctness on pages that don't declare one clearly — see the
53+
unanimity rule in the contract header of
54+
`extension/event-extractors/helpers/derive-timezone.js` (a zone is emitted only
55+
when two independent page-declared hints agree, otherwise none). The
56+
`technicalGotchas.md` this line cited until 2026-07-26 was superseded when that
57+
doc was folded into the gcec pack; the rule did **not** move into that pack's
58+
RULES.md, it lives in the source file's own header. A wrong `ctz` is a
59+
trust-breaking failure mode worth watching from the user's perspective — and
60+
because the contract refuses to guess, the *user-visible* failure is usually a
61+
**missing** timezone rather than a wrong one, so the complaint shape to expect
62+
in feedback is "it didn't set the timezone", not "it set the wrong time".
5963
- No support yet for calendars other than Google Calendar (see Market's open
6064
question on Outlook/ICS) — track whether this actually blocks real users or is
6165
a hypothetical gap.
@@ -69,6 +73,9 @@ never silently overwrite.
6973
which sites matter enough to users to warrant a dedicated extractor?
7074
- Does the lack of non-Google-Calendar support actually block real users? (Pairs
7175
with Market's `.ics`-export note.)
76+
- On timezone, which complaint shape actually shows up — "wrong time" or "no
77+
timezone at all"? The refusal-to-guess contract predicts the latter dominates;
78+
no real feedback yet either way (surfaced 2026-07-26).
7279

7380
## Sources
7481

@@ -97,3 +104,9 @@ permission/privacy data backing the privacy-conscious persona:
97104
gcec pack's `RULES.md`, *Codebase gotchas*), and `derive-timezone.js` lives at
98105
`extension/event-extractors/helpers/`. No new user-side research this pass —
99106
the personas and pain points here still await real feedback signal.
107+
- **2026-07-26 (same pass, second half)** — corrected the replacement citation
108+
written earlier the same day: the unanimity rule did not move into the gcec
109+
pack's RULES.md, it lives in `derive-timezone.js`'s own contract header. Reading
110+
that contract also yielded a user-side implication worth tracking — refusing to
111+
guess makes a *missing* timezone the expected complaint shape rather than a
112+
wrong one — added as an open question to check against real feedback.

0 commit comments

Comments
 (0)