Kishan ,
Pl consider this if Clude’s reasoning is valid
Incidentally , for automatic posting, you mentioned > Blogger site / Personal.ai / Linkedin
Pl also add > Facebook and X
Hcp
Blog Genie 3.0 — Addendum A: Pre-Publish Safety Scan
Sep 19, 2026 · @Hemen Parekh
Purpose and scope
Blog Genie 3.0 must never publish text that contains a credential, private personal data or third-party correspondence. This addendum adds the scan that enforces that rule. The scan runs twice: once when an archive post is ingested, and again before every publish.
It applies to every target platform (Blogger, LinkedIn, X, Facebook, Personal.ai) and to every autonomy mode. Factual checks and prior-art matching stay in the existing verify stage; this layer sits beside them and does not replace them.
What the scan must catch
The archive holds private correspondence that was later posted publicly, and an agent mining 6,800+ posts will meet it. A 2013 post on the Emails (Others) blog is the worked example: it reproduces a full email chain that includes a login and plaintext password for an ad-network publisher account, several named third parties with their email addresses, and the terms of a revenue-share negotiation.
Four risks follow from that:
- Credentials: passwords, API keys, tokens, login pairs.
- Third-party personal data: email addresses, phone numbers, postal addresses, ID numbers.
- Third-party correspondence and terms: quoted emails, revenue splits and negotiating positions the other party never agreed to publish.
- Unpublished or confidential material: drafts, unsent letters, internal notes.
Where it sits in the pipeline
Two gates wrap the existing flow: Gate 1 keeps sensitive text out of the corpus, and Gate 2 checks every finished draft before it can leave.
flowchart LR
A[Archive post] --> G1[Gate 1: ingestion scan]
G1 -->|clean or redacted| B[Corpus + Interest Graph]
G1 -->|critical| Q[Quarantine list]
B --> D[Draft]
D --> V[Verify stage]
V --> G2[Gate 2: pre-publish scan]
G2 -->|pass| H[Approval mode]
G2 -->|block| Q
H --> P[Publish]
Gate 1 means the drafter never sees quarantined text, so it cannot quote it. Gate 2 catches anything the drafter still produced or pulled in, and scans the final text of each platform version, including titles, links and any text embedded in images. Quarantine only excludes a post from the agent's corpus; it does not touch the original blog post.
Detection rules
Six categories, each with a severity that decides the action in the next section. Deterministic checks run first; the LLM classifier runs only on the categories that need surrounding context.
Category | Examples | Method | Severity |
Credentials | Passwords, "User Id / Password" pairs, API keys, tokens | Key-format patterns; a password-like word next to a value; entropy check on long strings | Critical |
Financial and ID numbers | Bank or card numbers, PAN, Aadhaar | Format pattern plus checksum (Luhn for cards, Verhoeff for Aadhaar) | Critical |
Third-party contact data | Email addresses, phone numbers, postal addresses | Patterns plus named-entity recognition, minus an allow-list of the owner's own public contacts | High |
Quoted correspondence | "From / To / Sent / Subject" headers, forwarded chains | Header pattern match | High |
Third-party commercial terms | Revenue shares, prices, contract terms tied to a named party | LLM classifier reading the surrounding paragraph | Medium |
Confidential or unpublished | "Confidential", "do not forward", unsent drafts | Keyword match plus classifier | Medium |
Actions by severity
Critical and High findings always stop a publish; only a human can lift a block, and the agent has no way to override one.
Severity | Gate 1 (ingestion) | Gate 2 (pre-publish) |
Critical | Quarantine the whole post; keep it out of the index | Block; alert the account owner; no automatic retry |
High | Replace each matched span with a placeholder; index the redacted text | Block until a human approves a redacted version |
Medium | Index with a flag; the drafter may summarize but not quote | Hold for human review, even in autonomous mode |
None | Index normally | Pass |
Critical matches come from deterministic checks only, so a credential is never sent to an external model for classification.
Approval and autonomy modes
The scan behaves the same in every mode; only what happens after a pass differs. Critical and High findings never reach an autonomous publish, and Medium findings always go to a human.
Proposed conditions before Blog Genie moves from human approval to full autonomy:
- The archive sweep (next section) is finished and every Critical and High finding is resolved.
- The test set in the acceptance criteria passes in full.
- 100 consecutive posts have been published under human approval, with a spot check of each finding log showing no missed Critical or High item.
- A single kill switch that pauses all publishing has been tested end to end.
Autonomy is reversible: any missed Critical or High item in production returns the agent to approval mode until the cause is fixed.
Audit log and archive sweep
Every scan writes one log line per finding: post ID, gate, category, severity, action taken, timestamp and the character position of the match. The log never stores the matched text itself, so it cannot become a second copy of a leaked secret.
Before Blog Genie publishes anything, run Gate 1 once over the full archive of 6,800+ posts and produce a report grouped by severity. For each Critical finding the owner decides whether to edit the original post on the source blog. Any credential the sweep finds should be treated as exposed and changed, whether or not the post is edited.
Acceptance criteria
The build is done when a labeled test set passes. Proposed set: the 2013 Emails (Others) post as the first fixture, one synthetic post per category in the detection table, and 20 clean posts to measure false positives.
Test | Pass condition |
Critical recall | 100% of seeded credentials and ID numbers found |
High recall | At least 95% of seeded contact data and quoted headers found |
False positives | No more than 2 of the 20 clean posts flagged High or above |
Redaction | Redacted output contains none of the matched strings |
Log hygiene | No matched secret appears anywhere in the audit log |
Bypass | No publish succeeds after a Gate 2 block, in any mode |
Open questions
- Who receives Critical alerts, and through which channel?
- Should the source blog posts with Critical findings be edited, or only excluded from the corpus?
- Which of the owner's own public contact details belong on the allow-list?
- Are the autonomy conditions above the right bar, or should they be stricter?
- Should Medium findings about named third parties be blocked outright rather than held for review?
No comments:
Post a Comment