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.
Drop your event materials into a folder. Open Claude Code and say "Process my event contacts". PostEvents runs a 6-stage pipeline:
- Extracts contact data from images, notes, audio, and screenshots
- Presents an interactive dashboard so you can verify and correct extracted data
- Learns your ICP (Ideal Customer Profile) through a short conversation
- Enriches contacts that need more context via web search
- Scores and classifies every contact — hot / warm / cool, plus relationship type
- 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.
npm install -g posteventsmkdir my-event && cd my-event
postevents initDrop 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
In a separate terminal:
postevents startOpen 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.
| 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. |
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 listexports/potential-customers.json— structured context for AI-drafted follow-up messagesexports/action-context.json— handoff file for follow-up actions
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.
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 meansqualification_tier_matrix— how fit + engagement combine into hot/warm/cool
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).
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.
See CONTRIBUTING.md for how to submit bug reports, suggest improvements, or contribute a new industry preset.
MIT