Business Process Charts

Milestone
Client Action
Manual / Internal
Decision
Reporting

Improvement Backlog

Process

Product: setup.devpartnerships.com

Product: APIs (DEV / Forem Tools)

Product: Forem Core App

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

Add setup.devpartnerships.com

For Display Ads, sometimes include setup.devpartnerships.com link in handoff email

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.

Bust Cache

At dev.to/admin/advanced/tools: fill "Link:" field with "/", submit. Visit home page to confirm everything is live.

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

Client: View Guide & Configure Ads

Setup portal: setup.devpartnerships.com
Guide: /guide
Hosted on Vercel

Noah: Export to Billboards

Manual export to billboards.forem.com

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)