Narrative

Social Media Suite — Centralized, Reliable, Analytical

manual, per platformcentralized, scheduledposting process

Social media posting was done manually, platform by platform. No scheduling, no coordination, no visibility into what was performing. Teams were publishing and hoping, with no structured way to learn what content worked.

PythonSeleniumAPIAutomation

What Was Broken

How It Was Built

Reliability and the analytics feedback loop were the two priorities.

API + Selenium hybrid
  • Integrates with social media APIs for platforms that expose them, and uses Selenium for automation on platforms that do not.
Reliability-first posting
  • Social platforms are inconsistent — rate limits, login challenges, layout changes.
  • 📄 scheduler.py
Analytics feedback loop
  • Pulls engagement data — likes, shares, reach — back into the system so teams see what performs across platforms in one view rather than logging into each separately.

API + Selenium hybrid

Integrates with social media APIs for platforms that expose them, and uses Selenium for automation on platforms that do not. Posts scheduled through a central interface, queued, and dispatched at configured time.

Reliability-first posting

Social platforms are inconsistent — rate limits, login challenges, layout changes. Built retry logic and failure detection so a failed post triggers an alert rather than disappearing silently. Content creators are told when something did not go out.

scheduler.py
python
class PostScheduler:
    def dispatch(self, post: ScheduledPost) -> Result:
        # Health check before attempting
        if not self.platform_healthy(post.platform):
            return Result.DEFERRED
        
        try:
            result = self.post(post)
            self.log_success(post, result)
            return Result.SUCCESS
            
        except RateLimitError:
            self.reschedule(post, delay_minutes=15)
            return Result.RESCHEDULED
            
        except PostingError as e:
            # Never silent — always alert
            self.alert_creator(
                post=post,
                reason=str(e)
            )
            return Result.FAILED

Analytics feedback loop

Pulls engagement data — likes, shares, reach — back into the system so teams see what performs across platforms in one view rather than logging into each separately. Closed the loop: publish → measure → learn.

What Changed

Teams could plan a week of content, schedule it once, and have it go out reliably. Analytics gave actual data to make content decisions.

Posting Process
manual, per platform
0
one place
Failed Posts
silent failures
0
visible
Analytics
per-platform login
0
one dashboard
"Publishing without analytics is guessing. The feedback loop is what turns activity into learning."

Common Questions

API integrations are versioned — when a platform updates their API, there is a clear upgrade path. For Selenium flows, I built health check tests that run before each posting window to detect if the login or posting flow has broken. If it fails the health check, it alerts rather than attempting the post.
Existing tools work well for standard use cases. This was built for a team with specific workflow requirements and platform combinations that off-the-shelf tools did not support well — and they needed analytics integrated with internal data, not siloed in a third-party dashboard.