Skip to content

vivian-chi/PostEvents

Repository files navigation

PostEvents

Turn messy event materials into organized context that makes the next action obvious.

You come home from a conference with a stack of business cards, a voice memo, some chat screenshots, and a handful of blurry photos. PostEvents turns all of that into a scored contact list — with a clear next step for every person you met.


What It Does

Drop your event materials into a folder. Open Claude Code and say "Process my event contacts". PostEvents runs a 6-stage pipeline:

  1. Extracts contact data from images, notes, audio, and screenshots
  2. Presents an interactive dashboard so you can verify and correct extracted data
  3. Learns your ICP (Ideal Customer Profile) through a short conversation
  4. Enriches contacts that need more context via web search
  5. Scores and classifies every contact — hot / warm / cool, plus relationship type
  6. Exports a summary report, CRM-ready CSV, and a handoff file for AI follow-up drafting

No manual data entry. No spreadsheet wrangling. Just point it at your materials and review the results.


Quick Start

1. Install

npm install -g postevents

2. Set up a workspace

mkdir my-event && cd my-event
postevents init

3. Add your materials

Drop everything into inputs/raw/:

  • Business card photos (JPG, PNG — batch photos of multiple cards are fine)
  • Handwritten notes photos
  • LinkedIn screenshots
  • Event flyer photos
  • Audio recordings (m4a, mp3, wav) or pre-transcribed text files
  • vCard files

4. Start the dashboard servers

In a separate terminal:

postevents start

5. Run the pipeline

Open Claude Code in the workspace directory and say:

Process my event contacts

Claude will read SKILL.md and run the full pipeline. When the review dashboard opens at http://localhost:8347/, check each contact and click Done Reviewing when finished. The pipeline continues automatically.


Requirements

Requirement Notes
Claude Code Primary supported runtime. Also works in Cursor, Windsurf, and any MCP-compatible agent with file system access.
Node.js ≥ 18 For the dashboard servers. No external npm packages needed.
Vision-capable model Required for reading card images, screenshots, and flyers.
Web search access Recommended for contact enrichment (Stage 4). Pipeline works without it.
mlx-whisper (optional) For transcribing audio recordings on Apple Silicon. Pre-transcribed text files also accepted.

Example Output

After the pipeline runs, you get a human-readable summary report:

# PostEvents Summary: SaaS Connect Chicago 2026
**Processed:** 2026-04-10  |  **Total contacts:** 11

## Potential Customers by Tier
- Hot  (follow up within 24hrs):  2
- Warm (follow up within 48hrs):  3
- Cool (follow up within 7 days): 1

## Hot Contacts — Immediate Action Needed

| Name | Title | Company | Action | Channel | Urgency |
|------|-------|---------|--------|---------|---------|
| Linda Park | VP of Operations | Meridian Logistics | Email with Salesforce integration detail. She asked about it. Propose demo with GC this week. | email | within 24 hours |
| Natalie Brooks | Head of Procurement | Archbridge Partners | Email referencing her comment about contract turnaround times. Lead with time-savings data. | email | within 24 hours |

## Warm Contacts — Follow Up Soon

| Name | Title | Company | Action |
|------|-------|---------|--------|
| Wei Zhang | Director of Procurement | Foxconn Industrial | Email referencing SaaS Connect. Acknowledge enterprise scale; ask about mid-market divisions that evaluate tools independently. |
| James Osei | Senior Manager, Legal Advisory | Deloitte | LinkedIn message about legal tech adoption trends. Explore referral/co-implementation partnership. |
...

## Contacts Needing Your Attention
- David (investor, Stage 2 panel) — No last name or firm. Check speaker list and add identifying info.
- M. Russo (Castlepoint Co.) — Enrichment returned no results. Verify via LinkedIn before outreach.

You also get:

  • exports/crm-export.csv — CRM-ready contact list
  • exports/potential-customers.json — structured context for AI-drafted follow-up messages
  • exports/action-context.json — handoff file for follow-up actions

How It Works

The pipeline has 6 stages, each driven by a prompt file in workflows/prompts/:

Stage What happens
1 — Ingest Claude reads every file in inputs/raw/ and extracts structured contact data using source-specific schemas. Handles cards, notes, audio, LinkedIn screenshots, flyers, badges, and digital contacts.
2 — Organize + Review Data is normalized and engagement signals are parsed. An interactive dashboard opens at http://localhost:8347/ so you can see every contact alongside the original source image, correct errors, and add context.
3 — ICP Input Claude has a short conversation to learn (or confirm) your Ideal Customer Profile — target industries, roles, company size, and relevance keywords.
4 — Enrich Contacts that lack enough data for scoring are enriched via web search. Well-known companies (e.g., Google, Apple) are skipped.
5 — Classify + Score + Action Each contact gets a relationship type (customer, partner, investor, etc.), an ICP fit score (strong / possible / weak), a qualification tier (hot / warm / cool), and a specific recommended next action.
6 — Results + Export + Handoff A results dashboard opens at http://localhost:8348/ with full scoring detail. Exports are written to exports/. A handoff file is generated for AI-assisted follow-up message drafting.

Session state is tracked in config/session-state.json. If you stop mid-pipeline, Claude resumes from where it left off.


Customization

Adjusting scoring rubrics

Edit knowledge/icp-scoring.json to change how ICP fit is calculated:

  • fit_dimensions — the four scoring axes (industry, role, company size, relevance)
  • fit_labels — what each score level means
  • qualification_tier_matrix — how fit + engagement combine into hot/warm/cool

Adding industry presets

knowledge/industry-presets/ contains vertical overlays that adjust scoring for specific markets. Copy general-smb.json and fill in your industry's typical roles, keywords, and company size range. The orchestrator applies the matching preset automatically if you name the file after your industry (e.g., saas-b2b.json).

Adjusting relationship types

knowledge/relationship-types.json defines 11 relationship types across 4 categories (revenue, growth, operational, community). Add, remove, or relabel types to match your use case.


Contributing

See CONTRIBUTING.md for how to submit bug reports, suggest improvements, or contribute a new industry preset.


License

MIT

About

Turn messy event materials into organized context that makes the next action obvious.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors