Skip to content

docs(social): add Gemini Spark HK social posts for LinkedIn, Instagram and X - #353

Draft
jackng-wq wants to merge 20 commits into
mainfrom
claude/gemini-spark-hk-marketing-xhodes
Draft

docs(social): add Gemini Spark HK social posts for LinkedIn, Instagram and X#353
jackng-wq wants to merge 20 commits into
mainfrom
claude/gemini-spark-hk-marketing-xhodes

Conversation

@jackng-wq

@jackng-wq jackng-wq commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

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:

  • LinkedIn — long teaser, ~415 words
  • Instagram — caption with emoji section markers; uses "Link in bio", since captions carry no clickable link
  • X — a single long-form post, never a thread, per house style

Editorial calls worth a reviewer's attention:

  • Byline. The source is a Marketing-Interactive news analysis, not a Jacky Chan thought piece, so the house 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.
  • Attribution. An early revision carried several of the article's lines as if they were Votee's own narration, including verbatim quotes from Jacky Chan and from Nathan Petralia. Each is now quoted and attributed to its speaker.
  • Titles. Jacky Chan is credited as CoFounder and CTO at Votee AI and Beever AI; the article uses the shorter "CTO of Votee AI & Beever AI", and the fuller title is used deliberately as the company's own account describing its own CoFounder. Nathan Petralia keeps the exact title the source gives him. CARMA keeps its "media intelligence firm" descriptor.
  • CARMA sentiment figures. CARMA has not published the underlying dataset, so the copy attributes the finding to the article rather than presenting it as independently verified.

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.

  • Every claim re-verified against the source article alone, with no external corroboration
  • All quotes checked verbatim against the source document
  • Verbatim and near-verbatim lines now quoted and attributed rather than narrated
  • The source's "minor" qualifier on privacy/autonomy concerns restored; unsupported ranking language removed
  • Article URL cross-checked against the URL printed in the source document's own page footer
  • Each cut verified within its platform length limit
  • make test passes locally — not run; no code changed
  • make lint passes locally — not run; no code changed
  • New/changed behaviour has tests — n/a, editorial content

Screenshots (UI changes)

n/a — not a UI change.

Breaking changes

  • No breaking changes

Commit trailers checklist

  • Constraint: — present on each commit
  • Rejected: — present where an alternative was weighed
  • Directive: — present where guidance was needed
  • Confidence: — high
  • Scope-risk: — narrow
  • Not-tested: — no automated tests; verified by manual fact-check
  • Every commit is signed off (git commit -s) per DCO

CI note

pip-audit + npm audit (HIGH/CRITICAL gate) is red, and fails on base commit 7d791af too — 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.

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>
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copy link
Copy Markdown
Collaborator Author

CI status

pip-audit + npm audit (HIGH/CRITICAL gate) is red, but it fails on the base branch too — not caused by this diff.

The Security Audit run on main is already failing at 7d791af, which is the exact commit this branch is based on. The failure is 8 dependency CVEs, none of which this PR can reach:

Package Version Advisory Fix version
click 8.1.8 PYSEC-2026-2132 8.3.3
mcp 1.26.0 PYSEC-2026-3481, -3482, -3483 1.27.2 / 1.28.1
pyasn1 0.6.3 PYSEC-2026-3455, -3456, -3457 0.6.4

This PR adds exactly one file — social-draft/gemini-spark-hk-marketing-playbook.md — and touches no dependency manifest, no uv.lock, and no code. It cannot influence this gate either way.

Not fixing it here, deliberately. Bumping click, mcp, and pyasn1 is a dependency change with its own blast radius (mcp 1.26 → 1.28 is a minor-version jump across an interface this project builds on), and it belongs in its own PR with its own test run rather than riding along with an editorial change. Happy to open that separately if it's wanted.

Other checks so far: CodeQL, Analyze (python), Analyze (javascript-typescript), Bot (Node 20) and Supply Chain (digest pinning) all green. Backend, Web, the Docker Compose smoke test, make demo, and the one-line install check are still running — I'll follow up if any of them go red.


Generated by Claude Code

claude added 4 commits August 3, 2026 06:34
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>
@jackng-wq jackng-wq changed the title docs(social): add Gemini Spark HK marketing playbook social teaser docs(social): add Gemini Spark HK social posts for LinkedIn, Instagram and X Aug 3, 2026
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>

Copy link
Copy Markdown
Collaborator Author

Correction: the audit gate has grown, and it is not the same failure

My earlier comment listed 8 CVEs across 3 packages. As of the run on today's head (6508681), it is 12 CVEs across 5 packages — two new packages have been added by advisories published since yesterday:

Package Version Advisory Fix version
aiohttp 3.14.1 CVE-2026-59881, CVE-2026-69243 3.14.2 🆕
aiohttp 3.14.1 CVE-2026-69244 3.14.3 🆕
cryptography 49.0.0 CVE-2026-69247 50.0.0 🆕
click 8.1.8 PYSEC-2026-2132 8.3.3
mcp 1.26.0 PYSEC-2026-3481, -3482, -3483 1.27.2 / 1.28.1
pyasn1 0.6.3 PYSEC-2026-3455, -3456, -3457 0.6.4

Two things worth flagging:

  1. Still not caused by this PR. The diff is Markdown files under social-draft/ — no dependency manifest, no uv.lock, no code. Every package above comes from the project's existing lockfile.
  2. This is drift on the base branch, not noise. aiohttp and cryptography are new since yesterday, which means the gate is getting worse on main over time rather than holding steady. Anyone scoping the dependency-bump work off my earlier comment would now be under-scoping it — aiohttp → 3.14.3 and cryptography → 50.0.0 need to be in that PR too.

Flagging the growth because the trend matters more than any single red run here.


Generated by Claude Code

claude added 14 commits August 4, 2026 06:23
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants