Issues & Blockers - Mad Monkey Project
Project: "Where Has Benny Been?" - Issue Tracking
Issue Summary
| Category |
Count |
Status |
| Resolved Issues |
5 |
RESOLVED |
| Open Blockers |
2 |
OPEN |
| Workarounds in Place |
1 |
WORKAROUND |
| Items Being Monitored |
4 |
MONITORING |
Resolved Issues
RESOLVED
HIGH SEVERITY
Issue #1: Domain Strategy - Multiple Domains vs Single Domain
Problem
Initial architecture used multiple subdomains under mmc.fit domain:
list.mmc.fit - Email list management
benny.mmc.fit - Landing page
mmlnk.us - Short URLs
This created confusion and complexity in DNS management, SSL certificates, and branding.
Impact
- Confusing user experience with multiple domains
- Complex SSL certificate management
- Harder to maintain brand consistency
- Additional DNS configuration required
Solution
Consolidated to two-domain strategy:
- mmlnk.us - Short URL domain (clean, dedicated, public-facing)
- mad-monkey-creations.com - Main brand domain with subpaths:
/benny - Landing page
hooks. subdomain - n8n webhooks (internal)
mail. subdomain - Email server
Timeline
Dec 15, 2024
Identified domain complexity issue
Dec 16, 2024
Evaluated alternatives and decided on two-domain strategy
Dec 17, 2024
Updated documentation and architecture diagrams
Status
Resolution Date: December 17, 2024
Outcome: Simplified architecture improves user experience and reduces operational complexity
RESOLVED
MEDIUM SEVERITY
Issue #2: Email Provider Selection - Brevo vs ForwardMail.net
Problem
Initial plan was to use Brevo (formerly Sendinblue) as SMTP relay:
- Free tier: 300 emails/day
- Well-documented API
- Direct integration with Listmonk
However, during implementation discovered limitations and switched to ForwardMail.net
Comparison
| Feature |
Brevo |
ForwardMail.net |
| Free Tier |
300 emails/day |
More generous limits |
| Setup Complexity |
Moderate |
Simple |
| Deliverability |
Good |
Excellent |
| SMTP Support |
Yes |
Yes |
Solution
Switched to ForwardMail.net for improved deliverability and simpler configuration
Status
Resolution Date: December 18, 2024
Outcome: ForwardMail.net selected as primary SMTP provider
RESOLVED
LOW SEVERITY
Issue #3: Landing Page Hosting - Separate Container vs Subpath
Problem
Uncertainty about whether to host landing page as:
- Separate Docker container on 10.0.0.154
- Subpath on existing website (
/benny)
Decision Factors
| Approach |
Pros |
Cons |
| Separate Container |
Isolated, scalable, independent deployment |
More complexity, additional infrastructure |
| Subpath on Main Site |
Simpler, unified domain, easier SSL |
Coupled to main website deployment |
Solution
Use mad-monkey-creations.com/benny subpath approach for simplicity
Can migrate to separate container later if traffic demands it
Status
Resolution Date: December 19, 2024
Outcome: Landing page will be hosted at /benny subpath
RESOLVED
LOW SEVERITY
Issue #4: QR Code Format - SVG vs PNG
Problem
Decision needed on QR code image format for printing on PVC cards
Analysis
| Format |
Pros |
Cons |
Best Use |
| PNG |
Universal support, simple |
Fixed resolution, larger files |
Web display, standard print |
| SVG |
Infinite scaling, smaller files |
Some printers need rasterization |
Professional printing, flexible sizes |
Solution
Generate both formats:
- SVG - Primary format for print production (scalable to any size)
- PNG - Backup format at 300 DPI for compatibility
Status
Resolution Date: December 20, 2024
Outcome: Dual-format approach ensures maximum flexibility
RESOLVED
MEDIUM SEVERITY
Issue #5: Card Design - Move Code Placement
Problem
Initial design placed move code on front of traveler cards, but this caused confusion about whether it's required for nest cards
Impact
- Visual clutter on nest cards if included
- User confusion about when to use move code
- Potential for accidental move code usage on nest cards
Solution
Final Design:
- Nest Cards (Back):
- QR code
- Short URL
- Simple instructions: "Scan. Tell us where. Confirm email. Monthly winner!"
- Traveler Cards (Back):
- QR code
- Short URL
- Instructions + move code section
- Move code clearly labeled: "MOVE CODE: XXXX-XXXX"
Status
Resolution Date: December 21, 2024
Outcome: Separate card designs for nest vs traveler cards improve clarity
Open Blockers
OPEN
CRITICAL
Blocker #1: Port 25 (SMTP) Blocked by ISP
Problem
Comcast blocks outbound SMTP connections on port 25, preventing direct email delivery from self-hosted mail server
Discovery
# Port scan results
Port 25: FILTERED (blocked by ISP)
Port 465: OPEN (SMTPS)
Port 587: OPEN (Submission)
Port 993: OPEN (IMAPS)
Impact
- CRITICAL: Cannot send emails directly without SMTP relay
- Prevents self-hosted email server from functioning independently
- Requires third-party SMTP relay service
Workaround
Use ForwardMail.net as SMTP relay on ports 465 or 587
Configure Listmonk to send via ForwardMail.net instead of direct SMTP
Potential Solutions
- Continue with relay (RECOMMENDED): Use ForwardMail.net indefinitely
- Business ISP: Upgrade to business internet plan (unblocks port 25)
- VPS/Cloud: Move mail server to cloud provider (AWS, Digital Ocean, etc.)
- ISP Request: Contact Comcast to request port 25 unblock (rarely successful)
Status
Discovered: December 22, 2024
Current State: Workaround in place, not blocking development
Priority: Monitor but not urgent (relay solution works)
OPEN
HIGH SEVERITY
Blocker #2: ForwardMail.net Credentials Not Yet Configured
Problem
ForwardMail.net account exists but SMTP credentials have not been generated/configured in Listmonk
Impact
- Cannot send emails from Listmonk
- Blocks testing of double opt-in flow
- Prevents email drip campaign testing
Required Steps
- Log into ForwardMail.net dashboard
- Generate SMTP credentials for
hello@mad-monkey-creations.com
- Configure DNS records (SPF, DKIM, DMARC) per ForwardMail.net instructions
- Add SMTP settings to Listmonk configuration:
- SMTP Host
- SMTP Port (587 or 465)
- Username
- Password
- Send test email to verify configuration
- Check deliverability with mail-tester.com (aim for 10/10 score)
Status
Discovered: December 23, 2024
Current State: Actively blocking email testing
Priority: HIGH - Must resolve before Phase 2 (n8n workflow testing)
ETA: Pending account setup
Active Workarounds
WORKAROUND
MEDIUM SEVERITY
Workaround #1: SMTP Relay via ForwardMail.net
Original Issue
Port 25 blocked by Comcast ISP (see Blocker #1 above)
Workaround Details
Instead of direct SMTP on port 25, configure Listmonk to relay through ForwardMail.net:
# Listmonk SMTP Configuration
[smtp]
host = smtp.forwardmail.net
port = 587
username = hello@mad-monkey-creations.com
password = [API key or password]
from_email = hello@mad-monkey-creations.com
tls = true
auth_protocol = login
Limitations
- Dependent on third-party service availability
- Subject to ForwardMail.net rate limits
- Additional point of failure in email delivery
- May incur costs if exceeding free tier
Benefits
- Better deliverability (established sender reputation)
- Automatic SPF/DKIM signing
- No need to manage IP reputation
- Works around ISP port blocking
Status
Implemented: Pending (waiting on credentials)
Long-term Plan: Keep using relay (benefits outweigh negatives)
Items Being Monitored
MONITORING
LOW SEVERITY
Monitor #1: Database Performance
Description
PostgreSQL performance with expected load of:
- 1,000-5,000 scans per month
- 200-1,000 verified entries per month
- Multiple concurrent n8n workflow executions
Monitoring Plan
- Track query execution times in PostgreSQL logs
- Monitor connection pool usage
- Watch for slow queries (>500ms)
- Review index usage and add as needed
Thresholds
| Metric |
Warning |
Critical |
Action |
| Query Time |
>500ms |
>2s |
Add indexes, optimize queries |
| Connection Pool |
>80% used |
>95% used |
Increase pool size |
| Disk Usage |
>70% |
>85% |
Expand storage |
Status
Current State: Not yet in production, baseline metrics TBD
Review Frequency: Weekly during pilot, monthly after full launch
MONITORING
MEDIUM SEVERITY
Monitor #2: Email Deliverability & Spam Score
Description
Monitor email deliverability rates and spam scores to ensure emails reach subscribers
Key Metrics
- Delivery Rate: Target >95%
- Bounce Rate: Target <5%
- Spam Complaints: Target <0.1%
- Open Rate: Target >20%
- Click Rate: Target >3%
- Spam Score: Target 10/10 on mail-tester.com
Monitoring Tools
- Listmonk built-in analytics
- ForwardMail.net delivery reports
- Periodic mail-tester.com checks
- MXToolbox blacklist monitoring
Action Items if Issues Detected
- Review email content for spam triggers
- Verify SPF/DKIM/DMARC records
- Check sender IP reputation
- Review subscriber engagement (re-engagement campaign for inactive)
- Implement double opt-in strictly (already planned)
Status
Current State: Pending email system deployment
Review Frequency: Daily during pilot, weekly after launch
MONITORING
MEDIUM SEVERITY
Monitor #3: Dynamic External IP Changes
Description
External IP (76.150.65.61) is dynamic and may change without notice, breaking DNS resolution
Impact
- All external services become unreachable when IP changes
- DNS records need manual update
- Downtime until DNS propagates (up to 24 hours)
- Email delivery may be affected
Monitoring Plan
- Daily check of current external IP vs DNS records
- Automated alert when IP mismatch detected
- Health checks for all external endpoints
- Monitor email deliverability metrics
Response Procedure
When external IP changes:
- Detect new IP:
curl ifconfig.me
- Follow DNS-UPDATE-PROCESS.md
- Update A records for all domains
- Verify DNS propagation:
dig +short domain.com
- Test all services (n8n, Shlink, Listmonk, Traefik)
- Update documentation with new IP
Mitigation Options
| Option |
Cost |
Complexity |
Status |
| Dynamic DNS (DDNS) |
Free |
Low |
Recommended for pilot |
| Static IP from ISP |
$5-15/mo |
Low |
Consider for production |
| Move to VPS/Cloud |
$10-50/mo |
High |
Future consideration |
Status
Current IP: 76.150.65.61 (as of January 1, 2026)
Last Change: Unknown
Review Frequency: Daily automated check
MONITORING
LOW SEVERITY
Monitor #4: Stuck Card Rate
Description
Monitor percentage of cards that go inactive (no scans for extended periods)
Definitions
- Stuck Card: No scans in 10+ days
- Stagnant Card: No scans in 45+ days
Target Thresholds
| Metric |
Target |
Warning |
Action |
| Stuck Card Rate |
<10% |
>20% |
Re-engagement campaign, venue check |
| Stagnant Card Rate |
<5% |
>10% |
Retrieve and redeploy, contact venue |
Automated Alerts
n8n workflow will run daily to:
- Identify stuck cards (10+ days)
- Identify stagnant cards (45+ days)
- Send email report to admin
- Trigger rescue mission campaign for stagnant cards
Status
Current State: Workflow not yet built
Review Frequency: Daily automated check, weekly manual review
Lessons Learned
Key Takeaways from Issues
- Simplicity wins: Two-domain strategy is cleaner than multiple subdomains
- Research early: ISP port blocking should have been checked before planning self-hosted email
- Use managed services where it makes sense: Email relay services provide better deliverability than self-hosted
- Document decisions: Capturing why decisions were made helps future troubleshooting
- Plan for flexibility: Dual-format QR codes and modular architecture allow for changes