Read past partners
The run starts by reading the past-partners sheet, then normalizes the data and groups it by organization, so the agent knows who has already been worked with before it searches.
We built Mallory Portraits a scheduled AI agent that runs every Monday morning, searches the web for upcoming nonprofit fundraising events to partner with, deduplicates and vets them, and proposes each one for a four-day human review before any outreach goes out.
Mallory Portraits is a photography business whose donations program partners with nonprofit fundraising events each cycle. Finding those events used to be slow, manual research with thin coverage and no record of what had been checked. We replaced that with a weekly scheduled agent built on n8n. Every Monday morning it researches upcoming regional events with Perplexity, filters them down to ones that fit, removes anything already in the CRM or the sheet, and creates a proposed entry for each surviving event. Crucially, the agent discovers and proposes, it does not decide. Every entry is held for a four-day human review before any outreach, and every skip and dead end is written to a research log, so the whole thing is auditable end to end.
The program depends on finding the right nonprofit fundraising events to partner with, but the finding was the bottleneck. Each cycle someone sat down and searched by hand, one query at a time, trying to surface events in the region that were still upcoming and a fit for the program. It was slow, it covered only a fraction of what was actually out there, and the same organizations kept resurfacing because there was no quick way to check what had already been contacted.
There was also no audit trail. When an event was skipped, the reason lived in someone's head, not in a record, so the next person repeated the same dead ends. The team needed wider coverage, a way to avoid contacting the same organizations twice, and a record of every decision, without handing the actual judgment to a machine.
The design rule was simple and non-negotiable: the agent discovers and proposes, but a human reviews every single entry for four days before any outreach is sent. That keeps the judgment with the team and the grunt work with the machine. It is the honest way to run this, and it is also why the team trusts the pipeline it produces.
Around that rule, the agent does the heavy lifting the team used to do by hand. It searches far wider than a person can in a sitting, it never contacts an organization that is already in flight or on the do-not-contact list, and it leaves a written trail for every event it looked at, including the ones it rejected. Approved entries advance to outreach on their own once a person has signed off, so nothing stalls in a queue, and nothing goes out unreviewed.
A scheduled n8n agent that fires every Monday morning and works through the same vetted sequence each time.
The run starts by reading the past-partners sheet, then normalizes the data and groups it by organization, so the agent knows who has already been worked with before it searches.
A do-not-contact and ineligible gate runs first, removing any organization that should not be approached at all, so the agent never spends a search on something off-limits.
The agent uses Perplexity web search to find upcoming regional fundraising events, casting a far wider net than manual research could in the same time.
Results are filtered by region, by a future event date, and against non-political criteria, so only events that actually fit the program survive the pass.
A two-stage de-duplication checks each candidate against both the CRM and the sheet, so the same event and the same organization never enter the pipeline twice.
Each surviving event becomes a CRM contact and an opportunity in a "New Entry" stage, carrying the event details, ready for a person to look at.
Every entry is held for a four-day human review. Nothing moves toward outreach until a person has approved it. The agent never decides on its own.
Approved entries auto-advance to outreach, and every skip and no-result is written to a research log, giving the team a full audit trail of every run.
Slow manual research became a weekly, deduplicated, audit-logged pipeline of vetted opportunities. Every Monday the team opens a fresh set of proposed events that already passed the gate, the filters, and the de-duplication, with the reasoning for every skip on record. And because a person reviews each one for four days before anything is sent, the pipeline is both faster and more trustworthy than the hand-done version it replaced.
Part of a 5.0-rated track record on Upwork, across recruitment, FinOps, and data-pipeline automation builds for B2B teams.
See the track record on Upwork
Book a free audit. We will map the manual research eating your week and show you where a scheduled, human-reviewed agent fits. Confidential, no obligation.
Book My Free Audit bastien@otimizagency.com