Custom Agents are the most underused capability in Notion in 2026. Every workspace can now wire an agent to its databases, its connected tools and its instructions, and have it run end to end. Most teams have not built one. The teams that have, mostly built a single Q and A bot and called it a day.
Below are ten agents we run inside client workspaces today. Each is a recipe you can copy, with the trigger, the databases it reads, the tools it writes to, and the one failure mode we had to fix the hard way.
1. Inbound triage agent
Trigger: a new row in the Leads database. Reads the lead, enriches the company through a connected web search, scores fit against the ICP page, drafts a personalised first email, and assigns the right AE. Writes back to the Leads row with score, draft and owner. Failure mode we fixed: it kept inventing seniority titles. Solution: enforce extraction from the actual LinkedIn page, not the model's prior.
2. Meeting prep agent
Trigger: 30 minutes before a calendar event. Pulls the attendee, finds the matching deal or account in Notion, reads the last three touchpoints, and posts a one-page brief to the meeting note. Failure mode: it summarised emails that were already replied to. Solution: filter by thread state, not just date.
3. Renewal risk agent
Trigger: weekly cron. Walks the accounts database, scores renewal risk from usage signals and ticket history, drafts a save-play for the CSM, and creates a task on at-risk accounts. Failure mode: noisy on accounts with seasonal usage. Solution: rolling 90-day window with a sector-specific baseline.
4. RFP responder agent
Trigger: a new row in the RFPs database with a PDF attached. Extracts the questions, drafts answers from the knowledge base, flags every question without a confident source, and creates a review task for the deal owner. Failure mode: it confidently fabricated security answers. Solution: every security question routes through a small hand-curated security database, no model fallback allowed.
5. Weekly business review agent
Trigger: every Monday at 7am. Pulls revenue numbers from Stripe, pipeline from Notion, support from the ticket database, and assembles a narrative WBR document with what changed week over week and the open questions. Failure mode: it buried the bad news. Solution: explicit instruction to lead with anything red, and a verifier that checks the doc opens with a delta line.
6. Hiring scorecard agent
Trigger: a new candidate added to the ATS database. Reads the resume, scores it against the role profile page, drafts either a rejection email or a phone-screen invite, and updates the candidate record. Failure mode: it was too generous on borderline candidates. Solution: a calibration set of 20 past decisions used as few-shot anchors.
7. Vendor renewal agent
Trigger: 60 days before a vendor contract renewal. Pulls usage from the vendor database, drafts a renew-renegotiate-cancel recommendation, posts to the finance review channel. Failure mode: did not catch contracts with auto-renewal clauses shorter than 60 days. Solution: separate database property for notice period, sorted independently.
8. Knowledge curator agent
Trigger: any time a knowledge page is edited or a Slack question gets repeated. Detects stale or conflicting pages, drafts a merge or update, and creates a task for the page owner. Failure mode: it merged pages with subtle scope differences. Solution: never auto-merge, always propose with a diff and require human approval.
9. Finance close agent
Trigger: first business day of the month. Reconciles bank transactions against invoices in Notion, flags anomalies, drafts the month-end memo, updates the finance dashboard. Failure mode: it silently dropped foreign-currency lines. Solution: explicit currency normalisation step with an audit log of every conversion.
10. Founder inbox agent
Trigger: any email received by the founder. Categorises into reply now, reply later, route to team, ignore. For route-to-team, drafts a handover with context, links to the relevant Notion page, and assigns the right teammate. Failure mode: it routed cold outbound to internal teammates as if it were a real ask. Solution: cold-outbound classifier runs first, hard ignore.
What every recipe shares
- 01A clear trigger. Cron, database row, calendar event or inbound message. Never a chat box.
- 02A scoped read surface. Two or three Notion databases plus one external tool. No grand reads.
- 03A write that survives a Friday. The output goes to a Notion record someone owns, not a chat reply.
- 04An eval set. Twenty examples we replay weekly to catch drift.
- 05A human reviewer for the first two weeks, then a sampled review after.
The agents we tried and killed
Not every recipe survives contact with a real workspace. We have killed the all-purpose company chat agent (nobody asked it anything once the novelty wore off), the auto-replying support agent (one wrong reply burns more trust than 100 right ones save), and the proactive Slack pinger (people learned to mute it within a week). The pattern: agents that nudge humans without doing the work get ignored. Agents that own a small surface end to end stick.
How to start
Pick the one recipe above that maps to a workflow that hurts in your company this quarter. Build it as a Custom Agent. Run it under a human reviewer for two weeks. Add the next one. The full implementation arc is laid out on the Notion AI operating system page. If you want help shipping the first three, book the audit.


