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.

Project Preview 1: Follow-up Results

Project Preview 2: Organized Contacts Review

What It Does

Drop your event materials into a folder. Open your AI coding assistant 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 your AI coding assistant in the workspace directory and say:

Process my event contacts

The AI 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
AI coding assistant Works with Claude Code, 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 The AI 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 The AI 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, the AI 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.

Topics

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors