Three real errors wiring n8n to the database:
1. The payload sat one level deeper than I assumed
2. The tool silently blanked two fields on save
3. Exposing a schema to the API is not granting the role permission
The third cost me an hour.
Reply classification runs on rules, not AI. On purpose.
If a model hallucinates on a "stop contacting me", you contact someone who asked to leave.
Some decisions don't get delegated to a model. That's one.
The first table I created in the sales system is called suppressions.
Anyone who replies "no" goes in, and no system touches them again. Campaign, follow-up, nurture — nothing.
Build the exit before you build the entrance.
I split the architecture into two surfaces:
Notion for what I curate — decisions, pipeline, doctrine.
A database for what the machine writes — events, volume, state.
And sync in one direction only. Two-way between them always breaks.
I sent 23 cold emails by hand this week.
14 minutes. Zero errors.
And zero value, because none of it was recorded anywhere. If someone replies in four days, nothing tells me.
Work done is not a system.
The event date was written inside a code node. In three different places.
So nobody could audit it without opening the workflow and reading JavaScript.
Rule I took from it: business logic lives in SQL, in one place, readable. The workflow only executes.
The problem wasn't that the workflow was wrong.
It was that nothing told me it was wrong.
An automation that fails silently is worse than no automation. At least without one, you know nobody is doing the work.
Found an automation of mine still running after three months.
Every weekday at 9am, inviting people to an event that had already happened.
It sent nothing, because nobody was eligible. Loaded, with no ammunition.
Turned it off. Then saw the real problem.