How I automated 95% of my journalist query responses, landing 3.7k backlinks
How Maddy Osman built a Zapier agent that scores incoming journalist queries, pulls supporting passages from her published content via RAG, and drops a ready-to-edit draft into Slack.

Journalist query services like Qwoted, Source of Sources, and Featured send out daily media opportunities. Each one is a potential media placement, a backlink, or a chance to get quoted as an expert in someone else’s content.
For a while, many of those opportunities went unanswered because I didn’t have the time to evaluate which ones were worth pursuing and draft responses strong enough to send. My name is Maddy Osman. I run a content agency called The Blogsmith, so I use these link building opportunities both to establish thought leadership and as a proof of concept for using content to achieve SEO successes for clients.
The result: a domain rating of 72 on Ahrefs and 3,700+ backlinks, all without paying for link building.

The Blogsmith’s domain rating via Ahrefs.
To do this, I built an agent to handle 95% of the query response process for me.
The agent uses retrieval-augmented generation, or RAG, to ground each draft in content I’ve already published rather than generating a generic response from scratch.
The workflow runs in Zapier Agents. When a journalist query arrives, the agent scores it for relevance, searches my content library for supporting material, and sends a ready-to-edit response to Slack along with the deadline and submission details.
RAG in 60 seconds
RAG connects an AI model to a knowledge base you control so it can retrieve the information most relevant to a query before responding. Instead of loading your entire content library into every prompt or relying on broad training data alone, the system searches your own content and pulls only the passages needed to ground the response. That keeps the context focused and avoids using tokens (and your budget) on material that has little to do with the question.
The result sounds like you, not a generic approximation of someone in your field. That matters for journalist queries: a response only earns a placement if it references things you’ve actually written and is specific enough to publish.
It also means you can reuse ideas you’ve already spent time refining instead of trying to reinvent the perfect answer every time a strong query lands in your inbox.
For the full explanation of RAG and the upload pipeline that keeps the knowledge base current, check out my RAG guide.
My setup from inbox to draft response
I built this in Zapier Agents, which I chose for its ease of use, flexibility, and because Zapier integrates with nearly everything I’ve ever thrown at it. Its Zapier Agents feature makes the process easy: you write instructions in plain language and connect them to existing integrations without code.

Agent creation via AI chatbot in Zapier.
The workflow connects Gmail, Google Sheets, Slack, and a RAG layer built on Pinecone. I also use a lightweight app built in Replit as the bridge between Zapier Agents and Pinecone. (More about those services below).
A dedicated Gmail label routes journalist queries into the agent, which parses the email, scores it for relevance, pulls matching content from my vector database, logs everything to a Google Sheet, and sends a draft response to a Slack channel I set up for this.
Here is the full view of the tools I connected to make this work:

Configuring tools used in Zapier Agents for my journalist query workflow.
Step 1: Filter queries before the agent runs
The workflow starts with a Gmail trigger set to fire whenever a new email arrives with the “PR Opportunities” label. I apply this label to any email coming from journalist query services I subscribe to, which means the agent only processes emails already pre-filtered as potential opportunities.

Setting up the trigger for a Zapier Agents workflow.
Step 2: Parse the email
Once triggered, the agent parses the email body to extract the key fields: the query itself, relevant category, any requirements or qualifications they specified, contact information, and the due date. This structured data is what the rest of the workflow operates on.

Defining the agent instructions for parsing emails.
Step 3: Score queries against your topics
Not every query that lands in my Gmail label is worth responding to. The agent scores each one against a topic scoring guideline I created, which assigns score ranges to different subject areas. For example:
- Topics like AI, content marketing, SEO, and entrepreneurship score between 80 and 100.
- Tangentially related topics score between 20 and 40.
- Unrelated topics score between 0 and 10.
The agent uses keyword matching and contextual matching to arrive at a score and filters out low-scoring queries before proceeding.

Providing the agent with scoring criteria to focus on relevant queries.
Step 4: Connect the agent to your knowledge
For each query that scores high enough, the agent sends the query text as a webhook POST request to a Replit project I built that connects to my Pinecone vector database.
Pinecone stores your content in a format optimized for semantic search rather than keyword matching. Think of it as the indexed library your agent searches through whenever a query comes in.
Replit is a browser-based development tool that makes it relatively easy to build and deploy lightweight applications with a public URL. That public URL is what makes it usable as a bridge between Zapier and Pinecone without a separate backend.

Replit project set up to act as a bridge between the agent built on Zapier and Pinecone.
After the Replit project accepts the incoming request, it searches Pinecone for the most relevant chunks from my content library and returns those passages with source citations.
Step 5: Log the output for review
Before the draft response gets delivered, the agent logs everything to a Google Sheet. Each row captures the query details, contact information, source, due date, relevance score and its reasoning, and the RAG response.

Instructions for the Zapier AI agent to update a sheet with its results.

Running record of processed journalist queries in Google Sheets.
This creates a running record of every opportunity the agent has processed, useful for tracking what was sent, following up on placements, and reviewing how the scoring logic performs over time.
Step 6: Deliver the draft in Slack
Once the RAG response is back and logged, the agent sends a summary to my #blogsmith-expert-roundups Slack channel.
The message includes the original query details, the due date, the source, and the draft response drawn from my content. From there, I can read it, edit it, and send it directly to the journalist who posted the query.

Draft response for reaching out to the journalist based on RAG via Slack.
Step 7: Sign off on the output
The agent stops at the Slack message. Nothing goes to the journalist automatically, and that’s deliberate.
The draft gives me a starting point grounded in my own published thinking, but I still read it, adjust the tone, and make sure it actually answers what was asked before anything goes out.
The response might be close to what I’d actually say, or it might need a full rewrite of the angle.
Either way, the final judgment stays with me. This is the “human-in-the-loop” step. An automated response that misses the point of the query is worse than no response at all.
After editing the draft, I copy it into Gmail and send it using the contact details from the Slack message. Alternatively, you could set up this workflow to generate a draft (including the contact details) directly in Gmail.
Faster responses: from days to minutes
The clearest way to illustrate the difference is to compare my before and after. Before the agent, a journalist’s query asking for expert commentary on B2B content strategy would land in my inbox, sit unread for a day or two while client work took priority, and either get a rushed response or no response at all.
After the agent, that same query gets parsed, scored, and drafted within minutes of arriving, drawing from articles I’ve spent over a decade refining on exactly that topic.
Before building the agent, I could realistically respond to one or two journalist queries per week. Even with a longtime team member who knew my content library well, finding the strongest source material still required time and mental effort.
The agent removes that retrieval burden. By searching my full content library and surfacing the most relevant material automatically, it gives me a grounded starting point that usually requires minimal editing. I can now respond to several strong opportunities per day.
More importantly, the quality of those responses is more consistent than anything I could produce under time pressure. It also cut what I was spending on manual research and drafting for each response.
The draft that lands in Slack isn’t perfect every time, but it’s always a better starting point than a blank page.
Related
More data from the AI Lab.


