The first workflow starts from a Slack message. It pulls the company and contact out of the text, enriches the contact through a data provider, drafts copy appropriate to the channel, then verifies the email address. What happens next depends entirely on that verification result: a deliverable address goes to email, an undeliverable or risky one is routed to LinkedIn instead, and a hard failure stops and reports itself. Nothing is ever sent to an address that will bounce.
The second takes a spoken request in Telegram — a voice note, usually, because that is faster than typing on a phone — transcribes it, turns it into a structured search — not a keyword string — runs the sourcing job, and writes normalised rows back into the sheet the request came from. The person asking never opens the tool doing the work.
The third reads a column of domains, fetches and reads each site, and classifies the technology stack into a fixed set of categories so the results are comparable across a thousand rows. A free-text answer per row would have been easier to build and useless to sort.
The part that took the longest was not any of the happy paths. It was deciding what each workflow does when a provider returns a 429, when a domain resolves but serves nothing readable, and when the same lead arrives twice from two triggers. Those three cases account for most of the node count.