Outreach Demo
Build a draft-first outreach package from three inputs: business name, website URL, and contact email.
Keep the workflow evidence-based, concise, and approval-gated for any email send.
Workflow
-
Intake
- Collect:
- business name
- contact name if available
- contact email
- website URL
- optional business notes
- If website URL or email is missing, ask only for the missing field.
- Collect:
-
Website research
- Inspect the public website only.
- Prefer homepage, about, services/products, contact, and selected blog/resources pages.
- Extract only visible, supportable observations.
- Do not guess internal systems, revenue, staffing, or pain points.
-
OpenClaw fit analysis
- Propose up to 3 concrete OpenClaw use cases.
- Rank them by:
- visible fit
- likely business value
- lowest-friction starting point
- Also produce:
- one
priority_move - a short
why_it_matters[]list
- one
- Phrase uncertain conclusions as “likely”, “appears”, or “suggests”.
-
Report generation
- Use
references/report-format.mdfor section shape. - For plain operator review, render markdown with:
scripts/render_outreach_report.py --input <json> --output <md>
- For visually stronger delivery, render a polished HTML one-page brief with:
scripts/render_outreach_report_html.py --input <json> --output <html>
- Preferred showcase artifact: convert the HTML brief to PDF with:
scripts/render_outreach_report_pdf.sh --input <html> --output <pdf>
- Prefer PDF for live outreach when visual impact matters.
- Use
-
Email draft generation
- Default to the value-first / “free doughnut” framing: give the prospect a small concrete asset before asking for time.
- Use
references/email-template.mdfor default tone and structure. - Read
references/value-first-outreach.mdwhen you need to optimize for scannability, subject lines, or a more enticing value-first CTA. - Render a plain-text draft with:
scripts/render_outreach_email.py --input <json> --output <txt>
- Render lightweight HTML with:
scripts/render_outreach_email_html.py --input <json> --output <html>
- Preferred showcase send mode: HTML email + attached brief.
- Keep email short, specific, and visually scannable.
- Default to draft-only.
-
Approval gate
- Do not send email automatically.
- Sending is allowed only after explicit user approval for that recipient/message.
- Build a preview manifest with:
scripts/render_outreach_preview.py --input <json> --subject <subject> --email-text <txt> --email-html <html> --brief <brief.html> --output <preview.json>
- Before send, preview or summarize:
- recipient
- subject
- plain-text fallback body
- HTML body when used
- attached brief filename/format when used
- For actual HTML+brief send, use:
scripts/send_outreach_package.sh --to <email> --subject <subject> --text <txt> --html <html> --attach <brief.pdf>
- Use a client-facing attachment name such as:
<Business-Name>-OpenClaw-Brief.pdf
Output standard
Produce three artifacts when possible:
- structured JSON summary
- markdown report
- plain-text email draft
Recommended JSON fields:
business_namecontact_namecontact_emailwebsite_urlbusiness_summarylikely_audiencewebsite_observations[]openclaw_fits[]with:use_casewhy_it_fitslikely_valuestarting_point
priority_movewith:movewhy_firstexpected_benefit
why_it_matters[]demo_angleoutreach_summary
Guardrails
- Research public website content only unless the user supplies additional material.
- Do not claim verified need where only a hypothesis exists.
- Do not overpromise outcomes.
- Do not send email without explicit approval.
- Use the configured sender account and sender identity for outbound workflows; do not hardcode personal branding into public distributions.
Resources
references/
references/report-format.md— required report structurereferences/email-template.md— default email draft shape and constraintsreferences/value-first-outreach.md— value-first / “free doughnut” outreach framing, scannability rules, and CTA guidancereferences/visual-delivery.md— HTML email + one-page brief delivery guidance and approval-preview checklistreferences/follow-up-sequence.md— optional follow-up templates and cadence after the initial brief send
scripts/
scripts/render_outreach_report.py— render markdown report from structured JSONscripts/render_outreach_report_html.py— render polished HTML one-page brief from structured JSONscripts/render_outreach_report_pdf.sh— convert the HTML brief into a client-facing PDF artifactscripts/render_outreach_email.py— render plain-text outreach email from structured JSONscripts/render_outreach_email_html.py— render lightweight HTML outreach email from structured JSONscripts/render_outreach_preview.py— render approval preview manifest for the actual outbound packagescripts/send_outreach_package.sh— send HTML email plus attached brief via Gmail after approvalscripts/config.example.json— example config with sender account and output defaults