Ideas for implementing human review in workflow

Hi all, I’m quite new to n8n, but making decent progress with workflows that involve aggregating RSS feeds and sending email digests.

I’m familiar with the human-in-the-loop features that allow for an approval stage in the workflow. But what about more hands-on human curation? For example, let’s say that my workflow generates hundreds of news items, out of which I want to select the top 20 for a weekly digest. What are my options here?

I can think of using an AI agent with prompt (not ideal due to unpredictable results), or manually editing JSON output, which is also not ideal. Is there a way to implement something like a review pane where I can check/reorder the items I want included? Even better, a daily review with approved items aggregated for an end-of-week digest. Ideas much appreciated.

It looks like your topic is missing some important information. Could you provide the following if applicable.

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Hay @Amir_HK Look at this article it might give you some ideas.
Powered News Aggregator

Thanks, very interesting project. I’m pursuing something similar, but I really need the human curation component as it involves policy/regulatory subject matter. The recipients wouldn’t take the digest seriously if unrelated news slips through (or major news is omitted) by the AI agent.

I have been tinkering with creating frontend web pages that use multiple n8n workflows on the backend (webhook workflows).

In your case you could have a web page that triggers a workflow to fetch all the feeds. Then the web page lets you select the relevant news items and you hit submit which then calls a different workflow that collates them all and sends the email digest.

Or, if you want to do a daily review then you may need a workflow to save to a database or spreadsheet to store them. Then a final workflow to get the saved items and then send the digest.

1 Like

Thanks for the suggestion. Is there no way to set up a workflow that allows for review within the n8n workflow, as opposed to incorporating an external webpage? Ideally all the items would appear with checkboxes or delete buttons on a form. I am usually running the workflow with a locally hosted setup.

Yes, you could use the new Human in the loop option.

The gist of the workflow would be to set up a workflow that gets triggered and fetches the RSS feeds. Then use a code node to extract the data and create JSON for a form. Then you could use the Human in the loop option to send an email. The response type would be a Custom Form. And Define Form using Custom JSON. The value of the Form Fields would be the JSON from the previous code node.

So you will receive an email with a button link and that will open an n8n form which has checkboxes to select news items. Once that has been submitted you can continue the workflow as you wish. Either save the selected items or continue processing etc.

Here is my basic proof of concept.

What you probably want to do is store your records somewhere and trigger workflows on them when people edit them, leave notes, change status, etc.
This way you will have history and will be able to re-trigger workflows on errors or fix issues manually when they inevitably happen :cry:

For your use-case Baserow or Airtable both sound like good options.

Both apps are basically spreadsheets on steroids with an intuitive, easy to use UI builder that provides clean responsive UI for people to view and edit the records on desktop and mobile.

Airtable is a more polished and user friendly solution, but:

  1. It has less options for importing data from other places
  2. It’s free to start service plan is more limited than Baserow’s
  3. Not open-source and you can’t host it yourself.

Thank you for the suggestions, which I’ll explore shortly. What I’m doing is running an n8n locally hosted workflow to compile an end of business day email to some recipients. Included in the email is a list of news links compiled by RSS feeds > Keyword Filters > AI agent curating based on prompt. I want a final review step where I can manually review and delete/sort the remaining news items.

Since I’m at my computer watching the n8n workflow at the time of execution, it would be much easier if I could perform this within n8n itself without incorporating emails and external databases. But I realize that the native nodes might not allow for this. If it becomes too complicated, then I might as well edit the email manually with an email client.

1 Like

I wasted a couple hours trying to set something up by prompting Claude 3.7. It suggested to add a Wait node (just before the final gmail node) that resumes on a webhook call. Then it set up a web page as a review interface (which I have to run a python server to get around CORS restrictions). Unfortunately it never worked as the review interface could never populate the information from the n8n workflow.

Just wondering if this approach can work in theory. I wasn’t aware that a Wait node could independently serve to send and retrieve information.

To keep it simple I would modify the original workflow I shared and use a Form Trigger. Instead of the Gmail Human in the Loop node, just go straight to another form.

Once that second form has been submitted you have the selected items and continue how you need to.

This keeps everything in n8n and no need for a separate web page or email service.

Thanks. Not sure I fully understand the implementation. My workflow doesn’t start with a form submission. It starts with a manual trigger and then I have a bunch of RSS feeds defined in a set node that feeds into a loop over items with RSS read node.

Further downstream, the aggregated RSS items exist in the format below. Is it possible for a form node to process JSON to display a list of RSS items with option to delete?

[
{
“emailContent”: {
“title”: “M&A News: KKR and Walmart (WMT) Wave Goodbye to Japanese Retailer Seiyu in $2.5B Deal”,
“link”: “M&A News: KKR and Walmart (WMT) Wave Goodbye to Japanese Retailer Seiyu in $2.5B Deal - TipRanks.com”,
“source”: “TipRanks”,
“date”: “Mar 05, 2025 06:14”,
“description”: “”
}
},
{
“emailContent”: {
“title”: “KKR, Walmart to Sell Japan Supermarket Chain Seiyu for $2.5 Billion”,
“link”: “KKR, Walmart to Sell Japan Supermarket Chain Seiyu for $2.5 Billion - WSJ”,
“source”: “The Wall Street Journal”,
“date”: “Mar 05, 2025 06:04”,
“description”: “”
}
}
]

I used a form trigger to start the workflow so that it can then show a form later on with the RSS options and checkboxes. This enables the “allows for review within the n8n workflow” step that you are looking for.

The fields in the form trigger are pretty much irrelevant, but I believe n8n needs at least one field in the form so the form can be submitted and kick off the workflow.

Form nodes use a JSON representation to create the form fields. So that is exactly what my demo workflow does. It takes the RSS values, uses a Code node to create the JSON representation of the form, and passes it as input to the form node.

This way you are using n8n forms as the UI for the entire workflow and it keeps everything in n8n. Much simpler.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.