← back · ← docs

Source: /home/clawdbot/clawd/event_management_app/docs/index.md

Event Management — Full Documentation

Last updated: 2026-03-09

Canonical project root: /home/clawdbot/clawd/Event_management (all edits must resolve under this root).

This is the single source of truth for operating and maintaining the Event Management system.

Scope: Event Management only.

---

1) System Purpose

The system collects event data from three sources, enriches contact details, stores everything in a central SQLite DB, and prepares outreach drafts (draft-only, never auto-send).

Primary goals:

Email Skill Quick Reference (Operator)

Email structure used:

  1. Greeting + event-specific opener (title/date/location)
  2. Approved multilingual ad hoc block (EN/DE/FR/IT/ES)
  3. CTA (interest + preferred follow-up)
  4. Signature placeholder

See full details in section 8.5 event-management-email below.

---

2) Architecture Overview

Core components

Runtime endpoints

---

3) UI Pages and What They Do

---

4) Source-Specific Run and Log Views

meeting.vienna.info

salzburgcongress.at

expo-experts.at

---

5) Downloads / Skill Artifacts

Current packaged versions are tracked in:

Detailed export inventory (paths + checksums) is in:

---

6) Database Documentation

Table: events

Schema (current):

Source values (canonical)

Status model (tag-style)

Status is a comma-separated tag set, not a single enum. Common tags observed/used:

Example combined statuses:

DB write policy

---

7) Global Business Logic

7.1 Dedupe strategy (current)

Applied across source scrapers, with source-scoped safeguards:

  1. match by source + title + event_date (date-aware first)
  2. fallback by source-specific stable URL identity (source + event_link or source + event_link_secondary depending on source and availability)
  3. fallback by source + title + location
  4. last resort: source + title

7.2 Conflict strategy

If existing field is non-empty and new value differs:

7.3 Contact strategy

7.4 Email drafting strategy

---

8) Skill-by-Skill Documentation

8.1 meeting-vienna-info

Skill file: /home/clawdbot/clawd/skills/meeting-vienna-info/SKILL.md

Purpose

Scrape meeting calendar events and enrich each with details + contact data.

Execution logic

Phase 4 runtime guardrails

Key extracted fields

Special rules

Artifacts

Run ID sequence (important)

In meeting summary logs, the normal per-run sequence is:

  1. *-meta → baseline calendar metadata snapshot (count + source last-update)
  2. *-full → main scrape pass (phase 1+2)
  3. *-deep-dive → enrichment/recovery for missing emails
  4. *-meeting-vienna-info-manual-phase4 → manual browser recovery (last resort)

Note: meta is not enrichment; enrichment is the deep-dive run.

Run ID sequence (important)

In meeting summary logs, the normal per-run sequence is:

  1. *-meta → baseline calendar metadata snapshot (count + source last-update)
  2. *-full → main scrape pass (phase 1+2)
  3. *-deep-dive → enrichment/recovery for missing emails
  4. *-meeting-vienna-info-manual-phase4 → manual browser recovery (last resort)

Note: meta is not enrichment; enrichment is the deep-dive run.

---

8.2 salzburgercongress-scraper

Skill file: /home/clawdbot/clawd/skills/salzburgercongress-scraper/SKILL.md

Purpose

Scrape Salzburg Congress calendar events and enrich contacts.

Execution logic

Phase 4 runtime guardrails

Date logic

Normalizes month/day text into canonical date strings (DD.MM.YYYY or ranges).

Contact logic

Multi-layer extraction (HTML/text/mailto/contact links/forms), with deep-dive retries.

Artifacts

---

8.3 expo-experts-at-scraper

Skill file: /home/clawdbot/clawd/skills/expo-experts-at-scraper/SKILL.md

Purpose

Scrape expo-experts calendar and enrich from official external event sites.

Execution logic

Phase 4 runtime guardrails

Important business rule

Contact discovery must rely on official event sites, not expo listing pages as final truth.

Artifacts

---

8.4 event-manager-scraper-pipeline

Skill file: /home/clawdbot/clawd/skills/event-manager-scraper-pipeline/SKILL.md

Script: /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline.py

Purpose

Run all sources in strict sequence with resilient continue-on-error behavior.

Stage order

The orchestrator runs phase-first across all sources:

  1. scrape: meeting → salzburg → expo
  2. deep_dive: meeting → salzburg → expo
  3. manual_phase4: meeting → salzburg → expo

Concurrency and safety

Pipeline statuses

Stage status

Artifacts

---

8.5 event-management-email

Skill file: /home/clawdbot/clawd/skills/event-management-email/SKILL.md

Script: /home/clawdbot/clawd/Event_management/scripts/event_management_email_drafter.py

Purpose

Generate multilingual outreach drafts safely with ranking and duplicate guards.

Hard rules

  1. Draft only, never send.
  2. Ask Alex on Telegram before creating mailbox Drafts.
  3. Prefer real organizer/event emails over generic/default addresses.
  4. If only default email or no official link exists, keep event flagged and mention contact-form/manual verification path.
  5. Attach newsletter PDF by default for mailbox drafts unless Alex says otherwise.

Required input fields (per event)

DB candidate logic

Selects events with draft-like status and available contact_email.

Quality scoring logic

Boosts:

Penalizes:

Draft safety logic

Duplicate guards (mandatory)

Email structure (required)

  1. Subject must always include the exact event title (mandatory).
  2. Greeting + event-specific opener (title/date/location context).
  3. Approved multilingual ad hoc block (EN/DE/FR/IT/ES, verbatim text below).
  4. CTA asking for interest and preferred follow-up.
  5. Signature placeholder.

Approved multilingual outreach text (verbatim)

Use exactly this block in drafts:

Subject format (mandatory)

Attachments policy

Hard boundary

Never send email automatically.

---

9) Operational Commands

Start app


cd /home/clawdbot/clawd/event_management_app
nohup .venv/bin/uvicorn main:app --host 0.0.0.0 --port 8001 > /home/clawdbot/clawd/Event_management/tmp/uvicorn-8001.log 2>&1 &

Health checks


curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8001/
curl -s -o /dev/null -w "%{http_code}\n" https://alex-xps-13-9360.tailb94929.ts.net/

Run full pipeline


/home/clawdbot/clawd/.venv-scrape/bin/python /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline.py

Run one source only


/home/clawdbot/clawd/.venv-scrape/bin/python /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline.py --only meeting
/home/clawdbot/clawd/.venv-scrape/bin/python /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline.py --only salzburg
/home/clawdbot/clawd/.venv-scrape/bin/python /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline.py --only expo

Generate report after run


/home/clawdbot/clawd/.venv-scrape/bin/python /home/clawdbot/clawd/Event_management/scripts/event_manager_pipeline_report.py

---

10) Operator Runbook (Human Operator)

Daily routine

  1. Open /settings and verify latest runs per source.
  2. Open /daily for summarized outcomes.
  3. Check /collisions for unresolved conflicts.
  4. Check /follow-up for aging tasks.
  5. Use source run-log pages for troubleshooting failed stages.

When a stage fails

  1. open stage run logs (/run-logs/.../{run_id})
  2. classify: timeout/dns/http/selector/data issue
  3. rerun affected source with --only
  4. verify DB delta on / and collisions page

Email drafting workflow

  1. run drafter script
  2. review generated DB drafts (email_draft content)
  3. confirm quality/recipient ranking
  4. ask Alex for mailbox draft approval
  5. do not send

---

11) Troubleshooting Quick Map

---

12) Documentation Safety Rule (Critical)