Skip to content

Add event-follow-up skill — CSV → personalized post-event emails #82

Open
jay-sahnan wants to merge 1 commit intomainfrom
event-follow-up
Open

Add event-follow-up skill — CSV → personalized post-event emails #82
jay-sahnan wants to merge 1 commit intomainfrom
event-follow-up

Conversation

@jay-sahnan
Copy link
Copy Markdown
Contributor

@jay-sahnan jay-sahnan commented Apr 27, 2026

Summary

  • New event-follow-up skill: takes a CSV of event attendees and produces a per-person follow-up email +
    sales-readiness flag (HOT / WARM / NURTURE / COLD), so AEs can stop sending generic "great meeting you"
    templates that get ignored.
  • Reuses the proven Plan→Research→Synthesize pattern from event-prospecting and company-research (ICP
    triage → deep-research → enrichment), but pivots the output: enrichment + sales-readiness scoring + email
    drafting all happen in one combined subagent pass per attendee.
  • Adds a repo-root .gitignore rule (skills/*/profiles/*.json with !example.json exception) so personal
    ICP profiles can't accidentally leak into commits across branches.

Note

Medium Risk
Adds a sizeable new skill with new Node scripts that parse CSVs, call the bb CLI, and generate HTML/CSV outputs; while mostly isolated, failures could surface as incorrect lead filtering/scoring or broken report generation.

Overview
Adds a new event-follow-up skill that takes an attendee CSV, scores companies against a user ICP, enriches selected attendees, assigns a sales-readiness bucket (HOT/WARM/NURTURE/COLD), and drafts per-person follow-up emails.

Introduces new Node tooling for the workflow: parse_csv.mjs (header auto-detection + normalization), extract_page.mjs (bb-backed page extraction with browse fallback), and a dedicated compile_report.mjs that renders index.html/people.html/companies.html, per-company detail pages, and a CRM-importable results.csv.

Updates repo ignore rules to prevent committing per-skill personal ICP profiles (only profiles/example.json is tracked), and adds skill-specific docs/templates (workflow governance, research/email rubrics, report template, fixtures).

Reviewed by Cursor Bugbot for commit 13eec13. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 13eec13. Configure here.

if (depth === 'deeper') {
const r3 = bbSearch(`"${name}" github`);
const r4 = bbSearch(`"${name}" site:x.com OR site:twitter.com`);
out.links = { ...out.links, ...harvestLinks([...(r3.results || []), ...(r4.results || [])]) };
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spread overwrites previously-discovered links with nulls

Medium Severity

The harvestLinks function always initializes all five link keys (linkedin, x, github, blog, podcast) to null. When lane 3–4 results are merged via { ...out.links, ...harvestLinks(newResults) }, every key from the new object overwrites the old one — so links discovered in lane 1 (e.g. a LinkedIn URL found by searching) that aren't re-found in lane 3–4 results get silently replaced with null. Only non-null values from the new call should overwrite existing entries.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 13eec13. Configure here.

out.links = { ...out.links, ...harvestLinks([...(r3.results || []), ...(r4.results || [])]) };
}

console.log(JSON.stringify(out, null, 2));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Script enrich_person.mjs is unused dead code

Low Severity

enrich_person.mjs is not referenced by SKILL.md, workflow.md, or any other file in the skill. The person-enrichment workflow (Step 9) instructs subagents to run bb search directly via Bash — this script is never invoked. It appears to be leftover scaffolding that adds maintenance burden and contains its own link-merging bug.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 13eec13. Configure here.


<footer>
<svg width="16" height="16" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" rx="8" fill="#F03603"/><path d="M36 72.2222V27.7778H51.2381C57.5873 27.7778 62.6667 32.8571 62.6667 39.2063V41.746C62.6667 44.6667 61.5873 47.3968 59.7461 49.3651C62.2858 51.4603 63.9366 54.6349 63.9366 58.254V60.7936C63.9366 67.1428 58.8572 72.2222 52.508 72.2222H36ZM42.3493 65.873H52.508C55.3651 65.873 57.5873 63.6508 57.5873 60.7936V58.254C57.5873 55.3968 55.3651 53.1746 52.508 53.1746H42.3493V65.873ZM42.3493 46.8254H51.2381C54.0953 46.8254 56.3175 44.6032 56.3175 41.746V39.2063C56.3175 36.3492 54.0953 34.127 51.2381 34.127H42.3493V46.8254Z" fill="white"/></svg>
Generated by <a href="https://github.com/anthropics/skills">company-research</a> · Powered by <a href="https://browserbase.com">Browserbase</a>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Report template footer references wrong skill and repo

Medium Severity

The template footer says "Generated by company-research" and links to github.com/anthropics/skills. The renderShell function in compile_report.mjs never replaces the footer, so all three main report pages (index.html, people.html, companies.html) display the wrong skill name and wrong GitHub organization. The per-company detail pages correctly say "event-follow-up" linking to github.com/browserbase/skills.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 13eec13. Configure here.

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.

1 participant