Skip to content

feat(connector): add Calendly data-source connector - #171

Open
1nkspand wants to merge 1 commit into
topoteretes:mainfrom
1nkspand:feature/add-calendly-connector
Open

feat(connector): add Calendly data-source connector#171
1nkspand wants to merge 1 commit into
topoteretes:mainfrom
1nkspand:feature/add-calendly-connector

Conversation

@1nkspand

@1nkspand 1nkspand commented Sep 1, 2026

Copy link
Copy Markdown

Description

Adds a Calendly data-source connector under packages/connector/calendly/, following the shape of the
five existing connectors (Notion is the closest working reference).

What it does

Turns your scheduled events into memory — "ask my calendar". Each active event becomes a document
whose content includes the event name and timing, the meeting notes, and — most importantly — every
invitee's questions & answers (the custom-question responses given at booking, which carry the
actual context).

Design

  • Auth — Calendly Personal Access Token, sent as Authorization: Bearer. Read-only (three GET
    endpoints: current user, list events, list invitees).
  • Ingest — events flow through cognee's document-mode path (DOCUMENT_SOURCE_ATTR), so they go
    through the normal cognify entity-extraction pipeline rather than the relational dlt-row path.
  • Incremental syncupdated_at-based cursor, mirroring the Confluence connector. Each run does
    a cheap metadata sweep of active events and re-fetches only those whose updated_at advanced since
    the last run (plus anything new to the corpus). Because the cursor is updated_at, not start_time,
    a meeting note added after an event ends is picked up on the next sync.
  • Forget-on-delete — Calendly has no delete feed, so each run compares the ids it saw last run
    against the current active sweep. A canceled (or vanished) event drops out of the active listing and
    is emitted with the _deleted hard-delete marker; dlt removes it on merge and cognee's existing
    orphan_cleanup purges it from the graph + vector + relational stores.

Files

  • cognee_community_connector_calendly/calendly.py — the dlt resource + sync state machine +
    minimal Calendly API client
  • cognee_community_connector_calendly/__init__.py — public calendly_source export
  • README.md — setup steps, usage, and sync/forget-on-delete semantics
  • examples/example.py — runnable end-to-end demo
  • tests/test_calendly.py — 19 tests
  • pyproject.toml, uv.lock — package metadata + locked deps

Testing

uv run pytest tests/ — 19 tests, no live token/network required (the Calendly API is fully mocked).
Coverage:

  • event/invitee rendering (meeting notes + invitee Q&A are the core context)
  • pagination across list_events / list_invitees
  • full backfill, the updated_at incremental cursor, meeting notes added to a past event, cancel /
    vanish → tombstone, invitee-email scoping
  • the dlt resource wiring (merge + id PK + hard_delete column + document-mode marker)
  • an offline dlt-merge e2e proving a cancel marker physically removes the row

Closes #4816

DCO Affirmation

I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin.

Signed-off-by: 1nkspand <y1492816650@163.com>
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