FounderReply

Digital PR

Earned coverage takes a good pitch. We handle the pitch.

Story angles drafted from pages we actually fetched, with every citation checked back against them. Journalist contacts read off the pages outlets publish for pitching. Every send held behind the same consent, suppression and kill-switch gate cold email runs through. Nothing here promises a placement — only that the pitch is a real one.

  • An angle citing a URL that is not in the material we fetched loses the citation, and then loses the angle.
  • One automated nudge after a week of silence. There is no second — the cap is the query, not a setting.
  • Every pitch is human-reviewed until your workspace earns auto-send, and one edit revokes it.

Human-reviewed by default · Auto-send earned, not assumed

PitchpersonalizedCheck-inthe only onereply?They reply → sequence endsStopmax 1lib/press-pitch.ts · runDuePressFollowups()

What it does

Three parts, each one honest about its limits.

This is not a spray-and-pray pitch blaster. It drafts an angle only from source pages it fetched, finds contacts on pages built for pitching, and sends one check-in after a week of silence — then waits for the journalist.

Angles drafted only from pages we fetched

Real source pages are searched and scraped first. The model then writes angles from that text and nothing else — a data study, a contrarian take, a trend your business has visibility into — never a product pitch wearing a press release.

HOW · generatePitchAngles() whitelists every cited URL against the set it actually scraped, drops the ones that are not in it, and throws away any angle left with no source at all.

Contacts from pages built for pitching

Discovery reads mastheads, staff directories and "how to pitch us" pages. A model makes that judgment, page by page; the domain blocklist only skips known-bad sites before we spend a fetch on them, and it is never the thing that says yes.

HOW · classifyPageForPress() has to agree a page is a publication’s own pitching surface, and every address it returns must appear verbatim in the scraped text — nothing is inferred from a name-and-domain pattern.

One nudge, then it is their move

A pitch is written to that journalist’s outlet and beat, and then nothing happens for a week. Total silence earns exactly one short check-in. There is no second one to configure, because there is no second one.

HOW · runDuePressFollowups() only ever selects rows whose follow-up count is zero, and sets it to one whether or not the nudge sent. A real reply clears the schedule first, so a reply always beats the nudge.

How a pitch goes out

Four steps, in this order.

Each step is a real function in the codebase, not a marketing abstraction over one black box. The order matters twice: sources are fetched before anything is drafted, and a reply is read before anything is concluded.

  1. 1

    Fetch the sources, then draft

    A real browser searches and reads a handful of real pages about your market. Only then does the model write angles, and only from that text. Each angle’s citations are checked back against the pages actually fetched; a citation that is not in the set is deleted, and an angle left with none is discarded.

  2. 2

    Discover who covers it

    A real browser finds candidate outlet pages for your beat, and a model judges each one: is this genuinely a publication’s own pitching surface. An address is only taken if it appears verbatim in the page text, and it lands as a press contact, never a sales lead.

  3. 3

    Personalize and queue

    The angle is rewritten for that journalist’s outlet and beat, then queued for your approval — or sent immediately once your workspace has earned auto-send by approving pitches without edits.

    Defaultslib/press-approval.ts
    // lib/press-approval.ts
    const TRUST_THRESHOLD = 15     // clean approvals before auto-send unlocks
    const SPOT_CHECK_RATE = 0.05   // ~5% of auto-sent pitches still reviewed
    
    // Any edit or rejection — including on a spot-check —
    // resets the streak and turns auto-send back off.
  4. 4

    One check-in, then read the reply

    A week of total silence earns one short check-in, and the sequence is then over. A reply arrives instead and it is classified — covered with a link, covered without one, declined, wants more — and that classification, not a search result, is what the campaign records.

What blocks a pitch

Eight checks, five of them inherited.

A journalist contact is a lead row like any other, so it rides the whole outreach gate — including business-only targeting, which is on by default and will refuse a reporter whose only published address is at a consumer mailbox. A check marks a filter no workspace can switch off; a minus marks one you own.

AUP acceptance
Every pitch send from a workspace that has not accepted the current policy versionoutreach-gate.workspaceMaySend()·Required
Payment on file
Pitches from a workspace with no card, as an identity and accountability signalbilling.hasPaymentOnFile()·Required when billing is live
Compliance pause
Every send while the workspace is held, kill switch or humankillswitch.isOutreachPaused()·Always
Do-not-contact / suppression
Any journalist address flagged dnc, unsubscribed, or on the durable suppression listconsent.canEmail(), suppression.isSuppressed()·Always
Business-only targeting
A journalist whose only address is at one of 30 consumer mailbox domains — gmail, outlook, proton and the rest. A press contact is a lead, so it meets the same eligibility policyeligibility.hasBusinessContext()·businessOnly, on by default
Human approval queue
Every personalized pitch, before its first send, unless auto-send has been earnedpress-approval.ts press_pitch_approvals·On until 15 clean approvals
Auto-send spot-check
Nothing outright — re-routes roughly 1 in 20 auto-sent pitches back through reviewpress-approval.ts queueOrSendPersonalizedPitch()·Always, once auto-send is on
Follow-up cap
A second automated nudge on a pitch, everpress-pitch.ts runDuePressFollowups()·Always — one check-in

Auto-send

Automation is earned, not assumed.

Every pitch starts human-reviewed. A workspace that consistently approves without editing graduates to auto-send — and a single edit or rejection, even on the spot-check sample kept running afterward, turns it back off.

15

consecutive clean approvals unlock auto-send for a workspace.

~1 in 20

auto-sent pitches still route through review as a spot-check.

Any edit

or rejection — spot-check included — resets the streak to zero and turns it off.

Either way

you can flip it yourself in Approvals; switching it off resets the streak too.

Journalist etiquette

A press list is not a lead list.

Reporters publish a pitching address so they can be pitched — once, on something relevant, by someone who read their work. Everything below follows from treating that as the whole permission it is.

What Digital PR does with a journalist contact

You are the sender of record, from your own domain. These are the rules applied to every address discovery finds.

Always
Reads only a page a model has judged to be a publication’s own pitching surface — masthead, staff directory, "how to pitch us".
Takes an address that appears verbatim in that page’s text, and nothing that is inferred.
Writes the pitch to that journalist’s outlet and beat before it is queued.
Classifies a reply and records what the journalist actually said on the campaign.
Suppresses a journalist who unsubscribes or bounces, on the address, permanently.
Never
Guesses an address from a name-and-domain pattern.
Reads a personal profile, a gated database or anything behind a login.
Sends a second automated nudge on a pitch, whatever the settings say.
Concludes from a web search that your story ran — only a reply can say that.
Promises, implies or forecasts that a named outlet will cover you.

A published pitching address is still personal data, and the lawful basis is yours.

Discovery finding an address on a masthead is evidence it was published for pitching. It is not a lawful basis, and this product does not supply one:

  • CAN-SPAM, GDPR and ePrivacy apply to a pitch exactly as they apply to a sales email. A journalist in the EU has the same rights as any other recipient, including erasure.
  • Relevance is the etiquette rule with teeth: pitching a beat a reporter does not cover is how a domain earns a personal blocklist, which no suppression list of ours can undo.
  • The one-nudge cap is per pitch, not per journalist. Pitching the same person a new angle every week is still something you can choose to do, and still something that will cost you the contact.
  • A contact another workspace verified for the same beat in the last thirty days can be reused without this workspace re-reading the page. It was read from a published pitching page when it was discovered — it was not necessarily read today.

The gates are tools you use at your discretion, not legal advice and not a guarantee of compliance — the words the Acceptable Use Policy makes you affirm before your workspace can send anything at all.

Against the sibling product

Same send path. Different discipline in front of it.

Digital PR and cold email end at the same function, under the same gate. What differs is everything in front of it — and Digital PR deliberately gives up two things outreach has.

Digital PRCold email
Workspace gate — AUP, payment, kill switch, suppression, do-not-contact, business-onlyYesYes
Contacts discovered for youYesNo
Angle drafted only from fetched pages, citations checkedYesNo
Reply classified into a coverage statusYesNo
Follow-ups capped by the productOne, in codeNo
Multi-step sequences you design yourselfNoYes
Sending without reviewEarned after 15 clean approvalsOutbound is yours to configure
An inbound reply held for a humanYesYes
A guaranteed outcomeNoNo

Both channels finish at sendOutreachEmail(), so a journalist who unsubscribes is suppressed exactly like a sales lead — on the address, not the record. That also means business-only targeting applies to a pitch: see the gate above.

FAQ

Before you pitch a journalist.

What's automated, what isn't, and what we refuse to promise.

No. Coverage is earned by a journalist choosing to write about you — nothing automates that decision. What this product automates is the research, discovery, and personalized outreach that make a good pitch likely to land; whether it does is always the journalist’s call.
We search for outlets covering your beat in a real browser, fetch the candidate pages, and a model decides page by page whether each one is genuinely a publication’s own pitching surface — a masthead, a staff directory, a "how to pitch us" page. Every address it returns must appear verbatim in that page’s text, so nothing is guessed from a name and a domain.
There is a weekly sweep, and it is opt-in: a workspace that has not switched discovery on is skipped by the cron entirely. Running discovery by hand from the Press page works whether or not the sweep is enabled, and a contact another workspace already verified for the same beat in the last thirty days can be reused instead of fetched again.
Yes, until your workspace earns auto-send: 15 pitches approved without edits in a row unlocks it, and any edit or rejection — including on the roughly 1-in-20 spot-check that keeps running even after auto-send is on — turns it back off immediately. You can also toggle it manually at any time from Approvals.
Once. A week of total silence after the pitch earns one short check-in, and that is the end of the automated sequence. The follow-up job only ever selects pitches that have had no nudge, so there is no campaign length to crank up and no second nudge to switch on.
Because the journalist said so. A reply is classified into one of nine dispositions — covered with a link, covered without one, declined, wants more information, out of office and so on — and any URL it reports has to appear verbatim in the reply. A coverage status is never guessed from a web search.
Yes, every one of them, because a pitch finishes at the same send path cold email runs through. That includes business-only targeting, which is on by default and will refuse a journalist whose only published address is at gmail.com or outlook.com. Turn it off for that workspace, or use a contact on the outlet’s own domain.

Ready when you are

Pitch fewer journalists. Pitch them properly.

Generate a sourced angle, review the first few pitches yourself, and let the etiquette caps do their job. Coverage is still up to the journalist — the pitch doesn’t have to be the reason they pass.

Free to start · You remain the sender of record · Card on file required once billing is live