docs(social): add Gemini Spark HK social posts for LinkedIn, Instagram and X - #353
docs(social): add Gemini Spark HK social posts for LinkedIn, Instagram and X#353jackng-wq wants to merge 20 commits into
Conversation
Add a ~360-word LinkedIn teaser summarising Marketing-Interactive's analysis of Google Gemini Spark's Hong Kong launch, in which Votee AI and Beever AI CTO Jacky Chan is a quoted source. The draft ships with its fact-check log so the sourcing behind each claim is reviewable alongside the copy. Constraint: the source is a news analysis by Karen Wong, not a Jacky Chan thought piece, so the standard author byline does not apply; the piece credits the publication and author and frames Jacky as a quoted source. Rejected: asserting CARMA's sentiment figures as independently verified — CARMA has not published the underlying dataset, so the claim is attributed to the article rather than stated as fact. Directive: leave the [link] placeholder until the canonical article URL is confirmed; do not publish with a guessed slug. Confidence: high Scope-risk: narrow Not-tested: no automated tests — editorial content, verified by manual fact-check against primary sources. Signed-off-by: Claude <noreply@anthropic.com>
|
|
CI status
The Security Audit run on
This PR adds exactly one file — Not fixing it here, deliberately. Bumping Other checks so far: CodeQL, Generated by Claude Code |
Add platform variants alongside the existing LinkedIn teaser: - Instagram caption — shorter, emoji section markers, "Link in bio" since captions carry no clickable link. - X — a single long-form post rather than a thread, carrying the full argument, the load-bearing numbers, the CTA and the link. Both credit Jacky Chan as a quoted source rather than as author, matching the LinkedIn cut. Constraint: X house style is one long-form post, never a thread, so the post is not trimmed to fit a 280-character limit. Rejected: tagging @jhkchan unverified — the handle was confirmed against the account bio ("CTO & Co-Founder of @HelloVotee") before use, since a wrong mention tags an uninvolved account. Directive: keep the [link] placeholder until the canonical article URL is confirmed; Instagram uses "Link in bio" instead by design. Confidence: high Scope-risk: narrow Not-tested: no automated tests — editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Re-check every claim in the LinkedIn, Instagram and X cuts against the source article alone, without external corroboration, and add job titles for everyone named. Attribution fixes — the first draft carried several verbatim and near-verbatim lines from the article as if they were Votee's own narration. Each is now quoted and attributed to its speaker: - Chan's "stop counting how many employees you have..." - Petralia's "always-on loops between insight, briefing, client reporting and campaign optimisation" - Chan's "a new service line - designing and running your clients' AI agents for them" - Chan's "even while your laptop is shut", previously read as a neutral product description Accuracy fixes: restore the source's "minor" qualifier on the privacy and autonomy concerns; drop the unranked "loudest open question" framing the source does not support; reattach "the boring half of the story" to basic productivity gains, which is the context it carries in the article. Titles added: Jacky Chan (CTO of Votee AI & Beever AI), Nathan Petralia (former country head of Hong Kong at Ogilvy One), CARMA (media intelligence firm), Karen Wong (the analysis's author). Constraint: verification was restricted to the source article, so claims are marked supported only where the article states them. Rejected: inventing a job title for Karen Wong — the source gives only a byline, so she is credited as author with no title. Directive: "CoFounder" is Votee house style and is not in the source; keep it only as Votee's own account describing its own CTO. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Two editorial decisions settled across all three cuts: - Jacky Chan is credited as CoFounder and CTO at Votee AI and Beever AI. The source article uses the short form "CTO of Votee AI & Beever AI"; the fuller title is used deliberately, as this is Votee's own account describing its own CoFounder and CTO. - The reporter is no longer named in the post copy. The piece is credited to Marketing-Interactive as the publication, which also removes the need to supply a job title the source never gave. Nathan Petralia keeps the exact title the source gives him, and CARMA keeps its "media intelligence firm" descriptor. Constraint: the reporter's name stays in the internal source header for provenance, but is absent from every published surface. Rejected: dropping "CoFounder" to match the article verbatim — the company's own account is authoritative on its own founders' titles. Directive: keep the [link] placeholder until the canonical URL is confirmed; Instagram uses "Link in bio" by design. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Replace the [link] placeholder in the LinkedIn and X cuts with the canonical article URL, confirmed by the user and matching the URL printed in the source PDF's own page footer. Instagram keeps "Link in bio" — captions carry no clickable link — so the URL needs parking in the profile bio before that surface posts. Constraint: the publisher's domain is unreachable from this environment, so the URL was verified against the source document's footer rather than by fetching it. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Adapt the Votee AI x HKT Enterprise Solutions announcement from LinkedIn to two further surfaces, in company announcement voice. - Instagram drops all inline URLs, since captions carry no clickable link, and routes the product block to "Link in bio". - X keeps every product link and stays a single long-form post rather than a thread, per house style. Eric Mok's title is written as "Vice President at HKT" rather than the original's "Vice President @ HKT", so the @ does not read as a broken handle mention on either platform. Constraint: no verified X handle was found for HKT, so the copy names it in plain text rather than guessing one. Rejected: tagging @hktdc — that is the Hong Kong Trade Development Council, a different organisation entirely. Directive: confirm HKT's and Jeff Tai's handles before adding any @ mentions; unicode-bold product names carry an accessibility cost that should be a deliberate choice, not an inherited default. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Correction: the audit gate has grown, and it is not the same failureMy earlier comment listed 8 CVEs across 3 packages. As of the run on today's head (
Two things worth flagging:
Flagging the growth because the trend matters more than any single red run here. Generated by Claude Code |
Rewrite the Instagram and X cuts using detail visible on the seminar slides, and add alt text for the four event photos. The slides supplied three concrete hooks the LinkedIn-only draft lacked: dual cloud and on-prem modes behind one interface, the named meeting summary formats, and the point that input hardware bounds transcription quality. Two slide claims are handled carefully rather than repeated: - The transcription accuracy figures belong to a device-vendor slide and describe voice input quality, not Votee's model accuracy, so the copy frames them as input-device quality rather than a product claim. - The AI Insights sentiment analytics slide is footnoted "To be available in 2H 2026", so it is kept out of the copy entirely rather than announced as shipped. Constraint: alt text is written for both surfaces, since neither platform generates anything usable automatically. Rejected: quoting the accuracy percentages as Votee figures — the slide attributes them to consumer versus professional audio hardware. Directive: confirm photography consent for the room photo before posting; it shows identifiable attendees. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Draft social copy for Kids Power Academy Volume 5, in two versions, because the briefed event had already finished by the time of writing. - Version A is a post-event recap for LinkedIn, Instagram and X, which is what can actually ship. - Version B preserves the promotional brief verbatim for reuse, with the date left as a placeholder so it cannot go out stale by accident. Corrections applied to the brief: "13:00pm" is not a valid time and reads as 1:00pm; speaker names are capitalised; "supported by Animoca Brands" is softened to "hosted at Animoca Brands' Hong Kong office", since the venue is confirmed but a sponsorship relationship is not. Constraint: the event ran 09:00-13:00 HKT on the day of writing and had finished, so a registration call to action could not be published. Rejected: asserting Animoca Brands sponsorship — only the venue is verifiable, and the two claims are materially different. Directive: confirm the @superbundgenalpha handle resolves before publishing; a dead handle in the call to action wastes the post. Get titles for both named coaches — every other named person carries a role. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Lift Jack Ng and Jason Mak from a trailing mention into their own beat in the "coaches pitch the kids" section, across all four cuts. The section now leads on the inversion itself — coaches sell, kids decide who to hire, and an unconvincing pitch means no team — with both coaches named up front rather than appended after the mechanic is explained. Titles and specialties are left as bracketed placeholders rather than guessed. They are what makes the emphasis land, and every other named person in the copy carries a role. Constraint: no verifiable titles or affiliations were supplied for either coach, so the copy marks the gaps instead of inventing credentials. Directive: fill every [TITLE, ORGANISATION] and [SPECIALTY] placeholder before publishing — the draft will read as unfinished otherwise. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Version B named Jack Ng and Jason Mak twice after the coaches section was expanded — once in the format block and again below it. Remove the second, now-redundant mention. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Put Votee AI in the title line of all four Superbund cuts and add a dedicated "Where Votee AI came in" beat describing the collaboration with Kids Power Academy. The brief supplied only a list of two coaches and no statement of Votee's role, so the beat is built around coaching — the one contribution the brief supports — and the specifics are left as bracketed placeholders rather than asserted. Constraint: no source states which coach represented Votee, what was pitched, what the groups built, or whether the arrangement continues past Volume 5. Rejected: describing the relationship as a sponsorship or technology partnership — nothing in the brief supports a claim that strong, and Kids Power Academy is a third party whose framing is not ours to invent. Directive: fill [WHICH COACH], [SPECIALTY] and [WHAT THEY BUILT] before publishing; the collaboration beat is the point of the post and reads as hollow while they are empty. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Both coaches are Votee AI, which makes the collaboration concrete enough to state plainly rather than gesture at. - Jack Ng, Head of Corporate Communications - Jason Mak, Security Research Apprentice, aged 16 Jason's age is now the load-bearing detail rather than a footnote: a 16-year-old apprentice pitching a room of 7-to-16-year-olds is his own age group, which is a far stronger argument for the format than any description of the format itself. The beat is rewritten around it across all four cuts. Only [WHAT THE GROUPS BUILT] remains outstanding, plus the date placeholders in the promo version. Constraint: Jason Mak is a minor, so publishing his name, age and role in promotional copy needs consent on file before this ships. Rejected: describing what each coach pitched — their roles are known, the content of their pitches is not, and inferring it from a job title would be invention. Directive: keep the age framing only if consent covers it; the beat still works without the number, though it loses most of its force. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
The workshop date is confirmed as Tuesday 4 August 2026, and today is Friday 7 August, so the recap's "this morning" and "today" references were three days stale. - All three recap cuts now say "on Tuesday" or "on 4 August". - The header note is rewritten: the date is confirmed rather than suspected, and Version B is reframed as a template for the next workshop instead of a possible primary. - Added a recency note: if publication slips further, drop the day reference and lead on Volume 5's publication, which does not decay since the book is still forthcoming. Constraint: a recap that says "today" three days after the fact reads as either careless or misleading about when it was written. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Remove [WHAT THE GROUPS BUILT] from all three recap cuts. The paragraphs close cleanly without it, so no replacement text was needed. Record that Jason Mak has consented to being named with his age and role, which clears the last safeguarding hold on the age line. The LinkedIn post offered as the consent record is not linked from the copy: its URL slug indicates it covers his security research rather than the workshop, so pointing readers at it as an account of the event would mislead them. Constraint: consent is now on record, so the 16-year-old framing stays. Rejected: linking the supplied LinkedIn post as event coverage — the slug suggests a different subject, and an unverified link in published copy is worse than no link. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Jason Mak's own LinkedIn post about the workshop supplies the detail the collaboration beat was missing: he works in offensive AI red teaming and adversarial threat modelling, presented that work at BSides HK, and pitched the security mindset to the room. His framing — that building secure AI starts with understanding how it can be broken — is now the beat's closing idea, which reads far better than a generic mentoring line. Two corrections carried in: - His title is "AI Security Apprentice", per his own public post, rather than the "Security Research Apprentice" passed to us internally. - An earlier note inferred from the post's URL slug that it covered his security research rather than this event. The post text shows it covers the workshop, so it is now flagged as linkable. The LinkedIn cut needed room for the addition, so the Superbund Blueprint paragraph was tightened rather than the new material trimmed. Constraint: LinkedIn sits at 2,959 of 3,000 characters — trim before any further addition to that cut. Rejected: inferring a post's subject from its URL slug — the slug named his specialism, not the occasion, and the full text contradicted it. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Cut LinkedIn from 482 words, X from 479 and Instagram from 348, all to roughly 300, and refresh the stale notes on coach titles and lengths. What was cut was mechanics: the tinker hour, the investor pitch and the vote were three separate beats describing process the reader does not need, and the Blueprint Initiative paragraph restated the premise already carried by the closing line. What was kept is the argument — the coaches pitching the kids, and Jason's red teaming background against his age. Version B keeps its full length: it carries date, venue, ages and what to bring, so trimming it would remove information a reader needs to attend rather than padding. Constraint: the collaboration beat is the point of the post, so the trimming came out of process description around it, not out of it. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Add "at Animoca" to the title line of all four cuts, and a thanks block to the three recap cuts naming Benson Wong (Managing Director, JP Morgan), Lobson Chan (Chief Operating Officer, Animoca Brands) and Shine Li (Social Media Manager, Animoca Brands). Version B takes the title change but not the thanks block: it advertises a workshop that has not happened, so thanking people for it in advance would read as an error. Two clearance notes recorded against the thanks block. JP Morgan applies strict policies to employees appearing in third-party marketing, so Benson Wong's inclusion needs confirming; and the bank styles itself "J.P. Morgan" or "JPMorgan Chase" rather than the plain "JP Morgan" used here as supplied. Constraint: these are named individuals at third-party companies, so the block is flagged for clearance rather than treated as ready to publish. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Rework the thanks block so it says what the two are being thanked for: Benson Wong and Shine Li spoke on the day. Lobson Chan stays in the block without a role attached, since no reason was given for his credit and inventing one would be a guess. "for talking at Animoca" is rendered as "for speaking on the day". The title already ends "at Animoca" and the opening line names Animoca Brands' Hong Kong office, so a third mention inside the thanks read as repetition rather than emphasis. Constraint: only two of the three names came with a stated reason, so the third is listed rather than described. Confidence: medium — Lobson Chan's credit is a live question, recorded in the file rather than resolved. Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Name Jason Mak as our 16-year-old AI Security Apprentice at the point of introduction, so the age lands with the credential rather than arriving two paragraphs later. The following paragraph opened "He's 16, pitching a room of 7-to-16-year-olds", which repeated the number within a few lines of the new mention. It now reads "He was pitching a room of 7-to-16-year-olds — his own age group", keeping the contrast while stating the age once. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Change "JP Morgan" to "J.P. Morgan" with points in all three recap cuts and in the notes, matching the bank's own styling for its investment banking and asset management brand. "JPMorgan Chase" is the parent entity name and is not the right form for a Managing Director credit, so it is not used. The clearance question is unaffected and remains open: naming a J.P. Morgan employee with their title in third-party marketing still needs confirming with them. Confidence: high Scope-risk: narrow Not-tested: no automated tests - editorial content. Signed-off-by: Claude <noreply@anthropic.com>
Summary
Adds social copy summarising Marketing-Interactive's analysis of Google Gemini Spark's Hong Kong launch — a piece in which Votee AI and Beever AI CoFounder and CTO Jacky Chan is a quoted source.
One new file,
social-draft/gemini-spark-hk-marketing-playbook.md, carrying three platform cuts plus the fact-check log behind them, so the sourcing for each claim is reviewable alongside the copy:Editorial calls worth a reviewer's attention:
by Jacky Chan…author byline does not apply. The posts credit the publication and frame Jacky as a quoted source. The reporter is not named in the copy.The article URL is confirmed and filled in for LinkedIn and X; Instagram still needs it parked in the profile bio.
Closes #
Test plan
Editorial content only — no code paths change, so the automated suites are not meaningful here.
make testpasses locally — not run; no code changedmake lintpasses locally — not run; no code changedScreenshots (UI changes)
n/a — not a UI change.
Breaking changes
Commit trailers checklist
Constraint:— present on each commitRejected:— present where an alternative was weighedDirective:— present where guidance was neededConfidence:— highScope-risk:— narrowNot-tested:— no automated tests; verified by manual fact-checkgit commit -s) per DCOCI note
pip-audit + npm audit (HIGH/CRITICAL gate)is red, and fails on base commit7d791aftoo — it is not caused by this diff, which touches one Markdown file and no dependency manifest. Detail in the comment below. The other 10 checks are green.