Business Process Charts
Improvement Backlog
Process
- Consistent reporting pattern — Standardize storytelling/reporting across all flows
Product: setup.devpartnerships.com
- Digest ad setup flow — Extend setup tool with guide + inputs + preview for digest sponsorships
- Newsletter ad setup flow — Extend setup tool with guide + inputs + preview for newsletter sponsorships
- Digest HTML builder — Template-based HTML generation + linter within setup tool
- Own image upload — Replace imager dependency with controlled image upload
Product: APIs (DEV / Forem Tools)
- Digest content API — Set digest content programmatically (new external API dependency)
- Dub.co link integration — Create tracking links via dub.co API
- Campaign Manager impressions API — Set impressions programmatically (may already exist)
Product: Forem Core App
- Live stream orchestration — Better tooling for turning streams on/off precisely (Noah to add specifics)
Sales to Delivery Handoff
flowchart LR
deal([Deal Closed]) --> handoff{Product Type?}
handoff -->|Challenge/Takeover| intro1[Email Intro: Meet Jess]
handoff -->|Display Ads| intro2[Email Intro: Meet Noah]
handoff -->|Digest/Newsletter/Livestream| intro3[Email Intro: Meet Noah]
intro2 --> include{Include Setup Link?}
include -->|Yes| setup[Add setup.devpartnerships.com]
include -->|No| done1([Handoff Complete])
setup --> done1
intro1 --> done2([Handoff Complete])
intro3 --> done3([Handoff Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
class deal,done1,done2,done3 milestone
class intro1,intro2,intro3,setup manual
class handoff,include decision
Email Intro: Meet Jess
Simple email introduction connecting client with Jess for Challenge or Takeover campaigns
Email Intro: Meet Noah
Email introduction connecting client with Noah for Display Ads, Digest Ads, Newsletter, or Livestream campaigns
Challenge Campaigns
flowchart LR
handoff([Handoff Complete]) --> gdoc[Send What to Expect GDoc]
gdoc --> clientfill[Client: Fill Out GDoc]
clientfill --> kick[Schedule Kickoff Call]
kick --> kickcall[Conduct Kickoff Call]
kickcall --> collab[Collaborate via GDoc]
collab --> exec[Execute Challenge Campaign]
exec --> report[Create Wrap Report]
report --> sendrpt[Send Wrap Report]
sendrpt --> done([Campaign Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class handoff,done milestone
class clientfill clientStyle
class gdoc,kick,kickcall,collab,exec manual
class report,sendrpt reporting
Send What to Expect GDoc
Base template Google Doc outlining campaign details, timeline, and requirements
Client: Fill Out GDoc
Client provides challenge details, goals, prizes, and any specific requirements
Conduct Kickoff Call
Dedicated call with Jess to align on challenge mechanics, goals, and execution plan
Create Wrap Report
Comprehensive report showing challenge results, participation metrics, and performance
Takeover Campaigns
flowchart LR
handoff([Handoff Complete]) --> gdoc[Send What to Expect GDoc]
gdoc --> clientfill[Client: Fill Out GDoc]
clientfill --> collab[Collaborate via GDoc]
collab --> exec[Execute Takeover Campaign]
exec --> done([Campaign Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class handoff,done milestone
class clientfill clientStyle
class gdoc,collab,exec manual
Send What to Expect GDoc
Base template Google Doc outlining takeover format, timeline, and content requirements
Client: Fill Out GDoc
Client provides takeover content, messaging, and scheduling preferences
Full Digest Flow SOP
flowchart LR
handoff([Handoff Complete]) --> prep[Prep Intake Form]
prep --> collect[Collect Client Info]
collect --> html[Generate Digest HTML]
html --> first[Configure Digest First Billboard]
first --> second[Configure Digest Second + Pairing]
second --> campaign[Set Impressions in Campaign Manager]
campaign --> approve[Publish & Approve Billboards]
approve --> pace[Verify Send Pace vs Client Expectations]
pace --> track[Track Clicks & Report]
track --> done([Campaign Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class handoff,done milestone
class collect clientStyle
class prep,html,first,second,campaign,approve,pace manual
class track reporting
click first "https://billboards.forem.tools/" _blank
click second "https://billboards.forem.tools/" _blank
click campaign "https://pro.forem.tools/" _blank
click track "https://dub.co/" _blank
Prep Intake Form
Locate previous Digest Intake Form, create a new copy, remove ALL previous campaign data, verify form is clean for new campaign.
Collect Client Info
Company name, Headline (25–80 chars), Image (rectangular), Target URL (with UTM), Description (200–350 chars), CTA Button Text (2–5 words).
Generate Digest HTML
Use Claude or approved tool: provide intake details, request HTML for Digest First (no image) and Digest Second (with image). Verify DEV guidelines, copy HTML.
Configure Digest First Billboard
At billboards.forem.tools: select Digest First, duplicate a recent billboard, replace HTML with Digest First HTML, set campaign name (e.g. companyname-digest-month-year), weight 1, clear expiration, save.
Configure Digest Second + Pairing
Duplicate Digest First billboard, replace HTML with Digest Second (with image), set location to Digest Email Second, save. Copy full name of Digest First billboard, paste into Digest Second "Pairing" setting, save.
Set Impressions in Campaign Manager
In pro.forem.tools Billboards > Campaign Manager: edit campaign, set max lifetime impressions = purchased sends × 2 (each placement counts separately).
Publish & Approve Billboards
Return to Digest billboards, publish both, then approve campaign in Campaign Manager.
Verify Send Pace vs Client Expectations
After billboards go live, confirm sends are going quickly enough based on what the client wants (e.g. timeline, volume). Adjust campaign or targeting in Campaign Manager if needed.
Track Clicks & Report
Use dub.co for click tracking; verify UTMs. Collect total sends and clicks, prepare report via Email or Slack per client preference.
DEV Top 7 Newsletter SOP
flowchart LR
handoff([Handoff Complete]) --> prep[Prep Intake Form]
prep --> collect[Collect Client Info by Friday]
collect --> draft[Jess Sends Draft Tuesday]
draft --> review[Proofread & Verify Sponsor Details]
review --> send([Newsletter Sent Tuesday])
send --> report[Reporting Wednesday Week After]
report --> done([Campaign Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class handoff,send,done milestone
class collect clientStyle
class prep,draft,review manual
class report reporting
click report "https://dub.co/" _blank
Prep Intake Form
Locate Top 7 Newsletter Intake Form (or create copy if bundled). Remove ALL previous campaign data; verify form is clean and ready.
Collect Client Info by Friday
Gather all details by Friday of the week before send. Main block: title (optional), 100–250 chars, square image (JPG 300 DPI, min 1600×1600), URL/UTM, CTA. Pre/post script: company name and link. If image is in doc: Save to Keep → Open in Keep → save image → upload to Imgur or send in Slack.
Proofread & Verify Sponsor Details
Jess sends draft Tuesday. Review for errors (paste into LLM for spellcheck). Verify headline, copy, image, CTA, links, company name; click all links; check dates/prizes; check image alt text.
Reporting Wednesday Week After
Sendgrid: delivered sends, unique opens. dub.co: filter Tue→Monday (7 days) for sponsor link clicks. Forward full email (PDF/screenshot). Send report via Email or Slack per client preference.
DEV Live Stream Simulcast SOP
flowchart LR
handoff([Handoff Complete]) --> evaluate{Stream Fit for DEV}
evaluate -->|No| decline[Decline Politely]
decline --> done1([End Process])
evaluate -->|Yes| prep[Prep Intake Form]
prep --> collect[Collect Client Info]
collect --> eventpage[Clone and Create Event Page]
eventpage --> startev[Start Live Event 20 Min Before]
startev --> review[Review and Approve 10 to 12 Min Before]
review --> cache[Bust Cache]
cache --> live([Stream Live 10 Min Before])
live --> endev[End Event 4 to 5 Min Before Stream Ends]
endev --> report[Reporting Tue Fri Mornings]
report --> done2([Campaign Complete])
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class handoff,live,done1,done2 milestone
class collect clientStyle
class prep,eventpage,startev,review,cache,endev manual
class evaluate decision
class decline,report reporting
click eventpage "https://dev.to/admin/customization/pages" _blank
click startev "https://billboards.forem.tools/" _blank
click cache "https://dev.to/admin/advanced/tools" _blank
Stream Fit for DEV
Evaluate if stream content aligns with DEV community standards. Confirm platform compatibility (Twitch/YouTube preferred, others possible but require testing).
Prep Intake Form
Locate Live Stream Simulcast intake template, create new copy, remove ALL previous event data, verify form is clean.
Collect Client Info
Event name, stream link (Twitch/YouTube), date/time/timezone, duration, DEV org account, description (max 180 chars), CTA URL (UTMs recommended).
Clone and Create Event Page
At dev.to/admin/customization/pages: find recent similar event, click Fork, update title/slug/body HTML, publish. Note URL format differences (/embed/ vs /live/).
Start Live Event 20 Min Before
At billboards.forem.tools: click "Start Live Event", fill form (stream URL, event page link). Process takes several minutes to unapprove competing billboards. If 10 min before and still live, manually unpublish competing billboards (typically "feed first" and "post fixed bottom").
Review and Approve 10 to 12 Min Before
Check all links and settings in billboards. Stream won't render correctly in Forem Tools - click "DEV Admin" to verify on actual site. Verify CTA points to correct event page.
End Event 4 to 5 Min Before Stream Ends
At billboards.forem.tools: click "End Live Event". Due to caching, ending early allows stream to gradually fade. Optional: re-bust cache. Monitor overtime streams (up to ~15 min leeway, case-by-case decision).
Reporting Tue/Fri Mornings
Access Metabase native analytics, filter for event date showing live event billboards. Pull total impressions (Top of Home Feed + Post Fixed Bottom). Send email with: total impressions, date/time, duration. Custom event page impressions tracked separately.
On-Platform Display Ads
flowchart LR
close([Deal Closed]) --> send[Send Setup Link]
send --> clientview[Client: View Guide & Configure Ads]
clientview --> alert[Receive New Ads Alert]
alert --> review{Adjustments Needed?}
review -->|Yes| adjust[Make Adjustments]
adjust --> export
review -->|No| export[[Noah: Export to Billboards]]
export --> credit[[Noah: Credit Impressions in Brain]]
credit --> tweak[[Noah: Set Impressions & Targeting]]
tweak --> dupe[[Noah: Create Duplicates as Needed]]
dupe --> live([Ads Live])
live --> dash[Send Dashboard Link to Client]
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
classDef reporting fill:#fadbd8,stroke:#cb4335,color:#1a1a1a
class close,live milestone
class clientview clientStyle
class adjust,export,credit,tweak,dupe manual
class dash reporting
class review decision
click clientview "https://setup.devpartnerships.com/" _blank
click export "https://billboards.forem.com/" _blank
Noah: Credit Impressions in Brain
Manually credit the purchased impression amount in brain.forem.tools
Noah: Set Impressions & Targeting
Configure ideal daily impressions and targeting criteria in Billboards admin
Noah: Create Duplicates
Duplicate ads for different targeting segments or A/B testing
Ad Demand & Availability Management
flowchart LR
start([Ads Running]) --> monitor[[Noah: Monitor Performance]]
monitor --> check{Ideal vs Available Match?}
check -->|Yes| continue[Continue Monitoring]
continue --> monitor
check -->|No - Underdelivering| gap[Identify Gap]
gap --> tags{Specific Tag Targeting?}
tags -->|Yes| assess[Assess Tag Availability]
tags -->|No| assess2[Check Overall Inventory]
assess --> action{Action Needed?}
assess2 --> action
action -->|Broaden Targeting| broaden[[Adjust Tags/Criteria]]
action -->|Lower Request| lower[[Reduce Ideal Impressions]]
action -->|Add Variants| dupe[[Create Duplicates]]
action -->|Pause| pause[[Pause Campaign]]
broaden --> monitor
lower --> monitor
dupe --> monitor
pause --> wait[Wait for Inventory]
wait --> monitor
classDef clientStyle fill:#d4e6f1,stroke:#2980b9,color:#1a1a1a
classDef manual fill:#fdebd0,stroke:#d68910,color:#1a1a1a
classDef milestone fill:#d5f5e3,stroke:#27ae60,color:#1a1a1a
classDef decision fill:#e8daef,stroke:#8e44ad,color:#1a1a1a
class start milestone
class monitor,broaden,lower,dupe,pause,continue,assess,assess2 manual
class check,tags,action decision
Noah: Monitor Performance
Ongoing review of actual impressions delivered vs. ideal (requested) impressions in billboards.forem.com
Assess Tag Availability
When ads target specific tags, check if enough inventory exists for those tags. Tag-specific targeting is the most common constraint.
Adjust Tags/Criteria
Broaden targeting parameters to increase available impression inventory (e.g., add related tags, expand geographic targeting)
Reduce Ideal Impressions
Lower the requested daily impressions to match what's actually available in the system
Create Duplicates
Make duplicate campaigns with different targeting to spread demand across more inventory
Pause Campaign
Temporarily pause until more inventory becomes available (rare, last resort option)