WanderingTechTech Events Bot blueprint

n8n workflow blueprint

Conference deadlines, collected every week and delivered on demand.

Collects upcoming conference deadlines every week and delivers them to the team by email and Telegram. Three linked workflows and 41 steps, with every source, filter, write and delivery mapped as one reference.

  1. 01Ingestion
  2. 02Discovery
  3. 03Delivery
Platform
n8n, with Supabase as the datastore
Workflows
3, linked by one shared datastore
Steps
41
Channels
Team email digest, Telegram bot
Runs
Weekly on a schedule, and on demand from Telegram
Prepared by
Jam Susana
TriggerStepWaitDecisionEnd

V1 · Oct 2026

Demo

See it run

A sample run through the workflows, step by step.

01

The three workflows

One pipeline that keeps the data clean, one that finds what is new, and one that answers the team.

Figure 01 · Workflow map3 workflows · 41 steps
WorkflowStarts whenBranches onStepsEnds with
01  Data ingestionSchedule trigger
Weekly run
None12Pipeline complete
02  New events discoverySchedule trigger
Weekly · ahead of ingestion
None12Discovery complete
03  Bot deliveryTelegram command received
/topic · /region · /subscribe
Command type?
CFP available?
More batches?
17Delivery complete
Subscription saved
02

Building blocks

Every workflow is assembled from the same small set of steps.

Figure 02 · Step catalog17 step types
StepWhat it does123Total
FilterApplies date-window logic to remove past and too-far-future events.2226
TransformFormats, categorizes, and normalizes data · taxonomy mapping, null-safe dates.2114
Database writeWrites or upserts records to Supabase · upsert matched by event name.31·4
End nodeTerminal point · this workflow path is complete.1124
TriggerEntry point · the scheduled or on-demand event that starts this workflow.1113
DeduplicateCompares against the records already stored and removes events already present.1113
If / elseSplits the flow based on data conditions · CFP available vs TBA.··33
Data sourceFetches raw JSON from the GitHub conference data repository by category file.11·2
API fetchCalls the public events API and retrieves the full events dataset.11·2
Database readReads all events from the events table for filtering and delivery.·112
FormatBuilds paginated HTML or Telegram-formatted message strings per batch.·112
Email sendSends the HTML digest email to the configured team recipients.·1·1
SubscriptionSaves or updates the subscriber record in the subscriptions table.··11
Date convertConverts human-readable dates to ISO format for reliable date comparison logic.··11
MergeCombines multiple filter branches into a single unified event stream.··11
Telegram sendDelivers the formatted message to the user via the Telegram Bot API.··11
WaitPauses 2 seconds between batch messages to avoid Telegram rate limits.··11
03

Triggers

What starts each workflow, and how a Telegram request is routed.

Figure 03 · Trigger map3 triggers
WorkflowTriggerTypeFires when
Workflow 1 Data ingestionSchedule triggerScheduleWeekly run
Workflow 2 New events discoverySchedule triggerScheduleWeekly · ahead of ingestion
Workflow 3 Bot deliveryTelegram command receivedTelegram command/topic · /region · /subscribe

How the bot routes a request, from Command type?

AnswerGoes toWhat it does
YESMap category / regionBuild isoDate window context
NOSave subscriptionUpsert to the subscriptions table
04

Settings and limits

The fixed values that shape what each run does.

Figure 04 · Settings13 settings
SettingValueSet in
Run cadenceWeeklyWorkflow 1 Schedule trigger
Run orderDiscovery runs ahead of ingestionWorkflow 2 Schedule trigger
Date window, collectionCurrent period only, worked out on each runWorkflow 1 Date window · feed A
Date window, botWithin 3 months. A CFP link must be open, or the event must be in the future when the deadline is TBAWorkflow 3 CFP path filter
Date format for comparingISO, YYYY-MM-DDWorkflow 3 Convert all dates to ISO
Write mode, ingestionUpsert, matched by event nameWorkflow 1 Write → events table
Write mode, discoveryAppend only, after dropping events already storedWorkflow 2 Append new events
Duplicates, ingestionMerged, with tags and topics combined across sourcesWorkflow 1 Merge duplicate events
Duplicates, botMatched by name, date and locationWorkflow 3 Remove duplicates
Batch size20 events per message, HTML-formattedWorkflow 3 Build paginated message
Pause between batches2 seconds, to stay under the Telegram rate limitWorkflow 3 Wait 2 seconds
Digest recipientsA fixed team list, team onlyWorkflow 2 Send team digest email
SubscriptionsSaved to the subscriptions table, inserted or updatedWorkflow 3 Save subscription
05

Rules and filters

Every step that decides what stays, what goes and how records are cleaned.

Figure 05 · Rules16 rules
WorkflowKindStepRule
Workflow 1FilterDate window · feed ADynamic: current period only
Workflow 1FilterDate window · feed BDynamic: current period only
Workflow 1TransformFormat + categorizeTaxonomy normalization · null-safe
Workflow 1TransformConvert timestampsNormalize to common date format
Workflow 1DeduplicateMerge duplicate eventsMerge tags and topics across sources
Workflow 2FilterDate window · feed ADynamic current period only
Workflow 2FilterDate window · feed BDynamic current period only
Workflow 2TransformFormat + categorizeTaxonomy · null-safe · deduplicate
Workflow 2DeduplicateRemove existing eventskeepNonMatches · new events only
Workflow 3If / elseCommand type?Route by command received
Workflow 3TransformMap category / region YES of Command type?Build isoDate window context
Workflow 3If / elseCFP available?Has CFP URL · deadline not TBA
Workflow 3FilterCFP path filter YES of CFP available?CFP open · within 3mo window
Workflow 3FilterTBA path filter NO of CFP available?Event future · within 3mo window
Workflow 3DeduplicateRemove duplicatesDedupe by name · date · location
Workflow 3If / elseMore batches?Loop until all pages delivered
Workflow 1

Data ingestion

PIPELINE

Scheduled refresh · pulls from external sources, formats and categorizes events, deduplicates, then upserts the datastore. The self-healing data layer.

Figure 06 · Data ingestion12 steps

Swipe sideways to see the whole flowchart

Data ingestion flowchart
TriggerSchedule triggerWeekly run
Data sourceFetch source feed ACategorized data files fetched
API fetchFetch source feed BFull dataset fetch
FilterDate window · feed ADynamic: current period only
FilterDate window · feed BDynamic: current period only
TransformFormat + categorizeTaxonomy normalization · null-safe
TransformConvert timestampsNormalize to common date format
DeduplicateMerge duplicate eventsMerge tags and topics across sources
Database writeWrite → events tableUpsert matched by name
Database writeWrite → feed A recordsUpsert matched by name
Database writeWrite → feed B recordsUpsert matched by name
End nodePipeline completeAll records refreshed · CFP links live
Read this workflow as a list
  1. Schedule trigger. Weekly run
  2. Fetch source feed A. Categorized data files fetched
  3. Fetch source feed B. Full dataset fetch
  4. Date window · feed A. Dynamic: current period only
  5. Date window · feed B. Dynamic: current period only
  6. Format + categorize. Taxonomy normalization · null-safe
  7. Convert timestamps. Normalize to common date format
  8. Merge duplicate events. Merge tags and topics across sources
  9. Write → events table. Upsert matched by name
  10. Write → feed A records. Upsert matched by name
  11. Write → feed B records. Upsert matched by name
  12. Pipeline complete. All records refreshed · CFP links live
Workflow 2

New events discovery

DISCOVERY

Runs ahead of the ingestion pipeline · finds only events not already stored, appends them, and emails an HTML digest to the team.

Figure 07 · New events discovery12 steps

Swipe sideways to see the whole flowchart

New events discovery flowchart
TriggerSchedule triggerWeekly · ahead of ingestion
Data sourceFetch source feed ACategorized data files
API fetchFetch source feed BFull dataset fetch
FilterDate window · feed ADynamic current period only
FilterDate window · feed BDynamic current period only
TransformFormat + categorizeTaxonomy · null-safe · deduplicate
Database readRead existing recordsLoad current conferences for comparison
DeduplicateRemove existing eventskeepNonMatches · new events only
Database writeAppend new eventsAppend-only write
FormatBuild HTML email digestTopic-grouped cards with CFP links
Email sendSend team digest emailHardcoded recipients · team only
End nodeDiscovery completeNew events added · team notified
Read this workflow as a list
  1. Schedule trigger. Weekly · ahead of ingestion
  2. Fetch source feed A. Categorized data files
  3. Fetch source feed B. Full dataset fetch
  4. Date window · feed A. Dynamic current period only
  5. Date window · feed B. Dynamic current period only
  6. Format + categorize. Taxonomy · null-safe · deduplicate
  7. Read existing records. Load current conferences for comparison
  8. Remove existing events. keepNonMatches · new events only
  9. Append new events. Append-only write
  10. Build HTML email digest. Topic-grouped cards with CFP links
  11. Send team digest email. Hardcoded recipients · team only
  12. Discovery complete. New events added · team notified
Workflow 3

Bot delivery

DELIVERY

On-demand Telegram delivery · user sends a command, bot reads from the datastore, applies a date-window filter, and delivers paginated results. Also runs scheduled digests.

Figure 08 · Bot delivery17 steps

Swipe sideways to see the whole flowchart

Bot delivery flowchartYESNOYESNOYESNO
TriggerTelegram command received/topic · /region · /subscribe
Command type?
TransformMap category / regionBuild isoDate window context
SubscriptionSave subscriptionUpsert to the subscriptions table
Database readRead events tableFull dataset · all events
Date convertConvert all dates to ISOHuman dates → YYYY-MM-DD for comparison
CFP available?
FilterCFP path filterCFP open · within 3mo window
FilterTBA path filterEvent future · within 3mo window
MergeMerge both pathsCombined event stream
DeduplicateRemove duplicatesDedupe by name · date · location
FormatBuild paginated message20 events/batch · HTML-formatted
Telegram sendSend batch to TelegramBot delivers to user chat ID
WaitWait 2 secondsRate-limit buffer between batches
More batches?
End nodeDelivery completeAll batches sent · user notified
End nodeSubscription savedUser enrolled in scheduled digests
Read this workflow as a list
  1. Telegram command received. /topic · /region · /subscribe
  2. Command type?. Route by command received
  3. Map category / region. Build isoDate window context
  4. Save subscription. Upsert to the subscriptions table
  5. Read events table. Full dataset · all events
  6. Subscription saved. User enrolled in scheduled digests
  7. Convert all dates to ISO. Human dates → YYYY-MM-DD for comparison
  8. CFP available?. Has CFP URL · deadline not TBA
  9. CFP path filter. CFP open · within 3mo window
  10. TBA path filter. Event future · within 3mo window
  11. Merge both paths. Combined event stream
  12. Remove duplicates. Dedupe by name · date · location
  13. Build paginated message. 20 events/batch · HTML-formatted
  14. Send batch to Telegram. Bot delivers to user chat ID
  15. Wait 2 seconds. Rate-limit buffer between batches
  16. More batches?. Loop until all pages delivered
  17. Delivery complete. All batches sent · user notified

Want something like this?

Tell me about the process you want off your plate. The brief takes about three minutes, and the project is priced before I start.

Start a Brief

Open the animated, interactive version of this diagram →

Shown at a high level. Real records, internal methods and anything confidential are left out.