fix: replace category pitches with Marcus's universal sponsor template #361

Closed
opened 2026-04-06 23:35:05 +00:00 by forgejo_admin · 0 comments

Type

Feature

Lineage

Child of basketball-api#316 (sponsor system). Updates blast pitch content to match Marcus's latest template (emailed to westsidebasktball@gmail.com 2026-04-06).

Repo

forgejo_admin/basketball-api

User Story

As an admin, I want the sponsor outreach email to use our strongest universal pitch — highlighting nonprofit status, national platform, and 150K+ IG views — so that every business gets the same compelling message.

Context

Marcus evolved his sponsor pitch since the initial GroupMe category-specific templates. His latest version (emailed 2026-04-06) is a single universal template that:

  • Leads with nonprofit + EIN status (new since 501(c)(3) filing)
  • Claims national platform with thousands of spectators + college coaches
  • Cites 150,000+ Instagram views per month
  • Lists what support covers (tournaments, gym, gear)
  • Lists what sponsors get (logo, social, events, network access)
  • No category-specific language — one pitch fits all

The current CATEGORY_PITCHES dict in sponsor_service.py has 9 different category-targeted pitches. Replace them all with one universal default pitch derived from Marcus's email.

File Targets

Files the agent should modify:

  • src/basketball_api/services/sponsor_service.py — replace CATEGORY_PITCHES dict with a single DEFAULT_PITCH string. Update get_pitch() to return custom_pitch if set, else DEFAULT_PITCH (ignore category).

Files the agent should NOT touch:

  • src/basketball_api/routes/sponsors.py — no route changes needed
  • src/basketball_api/models.py — no model changes needed

The New Default Pitch

Our mission is to provide student-athletes with opportunities for development, exposure, and access to college pathways — while also creating a strong, positive impact within our community. We currently serve over 70+ families, including both local and international athletes working toward scholarships and higher-level opportunities.

Our program competes on a national platform, playing in front of thousands of spectators and college coaches throughout the year. In addition, our social media presence continues to grow rapidly, generating over 150,000+ views per month on Instagram alone.

As a registered nonprofit organization with an EIN, we are reaching out to see if {{business_name}} would be interested in partnering with us as a community sponsor. We are growing quickly and building something special, and we would love your support in helping us continue to expand opportunities for these athletes.

Your support would directly help cover:
• Tournament fees and travel expenses
• Gym rentals and training resources
• Player gear and uniforms for athletes in need

We are open to all types of support, including:
• Financial sponsorships
• Product donations or discounts
• Food vouchers for teams during tournaments
• Community partnerships and promotions

In return, we provide strong visibility and exposure for your business, including:
• Logo placement on team gear and apparel
• Promotion across our social media platforms
• Brand exposure at tournaments and events
• Direct access to our growing network of families and athletes

We are building something meaningful and growing rapidly, and we would love to have {{business_name}} be a part of it.

I would love to connect and discuss how we can create a partnership that benefits both your business and our athletes.

Note: {{business_name}} in the pitch gets replaced by load_email_template along with the other template placeholders. The greeting ("Hello {{business_name}}") and closing ("Thank you... Marcus Draney...") are in the MJML template, not the pitch.

Acceptance Criteria

  • CATEGORY_PITCHES dict removed or replaced with single DEFAULT_PITCH
  • get_pitch(sponsor) returns custom_pitch if set, else DEFAULT_PITCH
  • Category parameter no longer affects pitch selection
  • Existing tests updated to reflect universal pitch
  • custom_pitch override still works (per-sponsor customization preserved)

Test Expectations

  • Unit: get_pitch returns DEFAULT_PITCH when no custom_pitch
  • Unit: get_pitch returns custom_pitch when set
  • Unit: get_pitch ignores category (returns same pitch for food, financial, etc.)
  • Run command: pytest tests/test_sponsor_blast.py -v

Constraints

  • Keep SponsorCategory enum — it's still useful for filtering and reporting, just not pitch selection
  • Keep custom_pitch field — sponsors can still get personalized pitches when needed
  • The MJML template handles greeting and closing — the pitch is just the body paragraphs

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • basketball-api#316 — parent epic
  • basketball-api#325 — blast endpoint (this modifies its pitch logic)
  • westside-sponsors — canonical sponsor reference
### Type Feature ### Lineage Child of basketball-api#316 (sponsor system). Updates blast pitch content to match Marcus's latest template (emailed to westsidebasktball@gmail.com 2026-04-06). ### Repo `forgejo_admin/basketball-api` ### User Story As an admin, I want the sponsor outreach email to use our strongest universal pitch — highlighting nonprofit status, national platform, and 150K+ IG views — so that every business gets the same compelling message. ### Context Marcus evolved his sponsor pitch since the initial GroupMe category-specific templates. His latest version (emailed 2026-04-06) is a single universal template that: - Leads with nonprofit + EIN status (new since 501(c)(3) filing) - Claims national platform with thousands of spectators + college coaches - Cites 150,000+ Instagram views per month - Lists what support covers (tournaments, gym, gear) - Lists what sponsors get (logo, social, events, network access) - No category-specific language — one pitch fits all The current CATEGORY_PITCHES dict in sponsor_service.py has 9 different category-targeted pitches. Replace them all with one universal default pitch derived from Marcus's email. ### File Targets Files the agent should modify: - `src/basketball_api/services/sponsor_service.py` — replace CATEGORY_PITCHES dict with a single DEFAULT_PITCH string. Update get_pitch() to return custom_pitch if set, else DEFAULT_PITCH (ignore category). Files the agent should NOT touch: - `src/basketball_api/routes/sponsors.py` — no route changes needed - `src/basketball_api/models.py` — no model changes needed ### The New Default Pitch ``` Our mission is to provide student-athletes with opportunities for development, exposure, and access to college pathways — while also creating a strong, positive impact within our community. We currently serve over 70+ families, including both local and international athletes working toward scholarships and higher-level opportunities. Our program competes on a national platform, playing in front of thousands of spectators and college coaches throughout the year. In addition, our social media presence continues to grow rapidly, generating over 150,000+ views per month on Instagram alone. As a registered nonprofit organization with an EIN, we are reaching out to see if {{business_name}} would be interested in partnering with us as a community sponsor. We are growing quickly and building something special, and we would love your support in helping us continue to expand opportunities for these athletes. Your support would directly help cover: • Tournament fees and travel expenses • Gym rentals and training resources • Player gear and uniforms for athletes in need We are open to all types of support, including: • Financial sponsorships • Product donations or discounts • Food vouchers for teams during tournaments • Community partnerships and promotions In return, we provide strong visibility and exposure for your business, including: • Logo placement on team gear and apparel • Promotion across our social media platforms • Brand exposure at tournaments and events • Direct access to our growing network of families and athletes We are building something meaningful and growing rapidly, and we would love to have {{business_name}} be a part of it. I would love to connect and discuss how we can create a partnership that benefits both your business and our athletes. ``` Note: {{business_name}} in the pitch gets replaced by load_email_template along with the other template placeholders. The greeting ("Hello {{business_name}}") and closing ("Thank you... Marcus Draney...") are in the MJML template, not the pitch. ### Acceptance Criteria - [ ] CATEGORY_PITCHES dict removed or replaced with single DEFAULT_PITCH - [ ] get_pitch(sponsor) returns custom_pitch if set, else DEFAULT_PITCH - [ ] Category parameter no longer affects pitch selection - [ ] Existing tests updated to reflect universal pitch - [ ] custom_pitch override still works (per-sponsor customization preserved) ### Test Expectations - [ ] Unit: get_pitch returns DEFAULT_PITCH when no custom_pitch - [ ] Unit: get_pitch returns custom_pitch when set - [ ] Unit: get_pitch ignores category (returns same pitch for food, financial, etc.) - Run command: `pytest tests/test_sponsor_blast.py -v` ### Constraints - Keep SponsorCategory enum — it's still useful for filtering and reporting, just not pitch selection - Keep custom_pitch field — sponsors can still get personalized pitches when needed - The MJML template handles greeting and closing — the pitch is just the body paragraphs ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - basketball-api#316 — parent epic - basketball-api#325 — blast endpoint (this modifies its pitch logic) - `westside-sponsors` — canonical sponsor reference
forgejo_admin 2026-04-06 23:41:08 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/basketball-api#361
No description provided.