Skip to content
Muhammad Aziz Taufiqurrahman
All case studies
8am Business Pte Ltd

8am Business · Automation platform · 2026

8am Agent: the automation platform behind 8am Go

8am Go runs many outbound campaigns for many clients at once. I designed and built 8am Agent to replace the manual checks, inbox searches and spreadsheet reporting behind every campaign with automated audits, work queues and reports. I owned it end to end: product definition, architecture, build, testing and rollout.

AutomationAI agentCRMTypeScript

At a glance

Role
Product owner, architect and sole engineer
Timeline
June to October 2026
Users
Campaign operators, account managers and leadership
Stack
TypeScript, Next.js, Supabase, AI agent SDK
Security
Read-only, least-privilege, row-level security

Outcomes

  • Errors caught the same day

    Every outgoing email is checked on the day it is sent, before a client or prospect notices a mistake.

  • Alerts the team trusts

    An evidence-based audit removed almost all false alarms, so every flag the team sees is worth acting on.

  • No warm lead left waiting

    All interested replies land in one queue, and leads who ask for later contact reappear on the right date.

  • Client numbers that match

    Reports reconcile exactly with the campaign platform, so every figure a client sees can be traced.

Context

The problem

The team checked emails by hand, searched for replies across many inboxes and rebuilt client numbers in spreadsheets. Mistakes such as a wrong name in a greeting or a missed reply were found late, sometimes by the client.

My approach

I specified every feature from the team's real workflow and verified it against live data. Two rules came first: the system never changes client campaigns, and every number is reconciled with the source before anyone sees it.

Seven product areas

Outgoing Email Audit

Checks every email sent that day: the greeting against the recipient, including honorifics such as the Thai "Khun", and the target company against the recipient's domain, with an evidence level for each verdict.

Protects the client's brand before an error spreads.

Campaign Intelligence

Scores every campaign on deliverability, engagement, conversion, list quality and content, and explains the root cause in plain language.

Shows each morning which campaign needs attention first.

Interested Leads

Sorts every positive reply into one queue by status and intent, and turns "contact me next month" into a dated reminder.

Turns warm replies into meetings.

Campaign Report

Weekly and monthly client results with a Google Sheet that updates itself and metrics that state exactly what they count.

Replaces hours of manual spreadsheet work.

Zoe, the Slack agent

An AI agent that answers questions in plain language from live data and posts a daily brief every weekday, with action tools limited to named admins.

Brings answers to where the team already works.

Internal area

A live project timeline, a per-division SOP library and a progress dashboard, all kept in the Google Sheets the team already uses.

Gives leadership one view of every division.

Website monitoring

Health, performance and user-flow tests for the 8am product websites, including multi-step onboarding forms.

Finds broken pages before prospects do.

Architecture

One TypeScript monorepo: three applications share a single business-rules package, so the dashboard, the Slack agent and the tests always apply the same logic.

Before and after

TaskBefore 8am AgentWith 8am Agent
Checking sent emailsA few emails spot-checked by handEvery email audited the same day, with evidence
Finding weak campaignsOpening campaigns one by oneAll campaigns ranked by health, with the fix
Handling interested repliesSearching many inboxesOne prioritised queue with dated reminders
Client reportingNumbers rebuilt in spreadsheets weeklyAutomatic weekly and monthly reports
Team updatesAsking aroundA daily Slack brief and instant answers

Security and data safety

  • Read-only by design. The platform never changes client campaigns or leads and never posts on its own; a build-time check fails the build if any code tries to.
  • Least privilege, deny by default. The Slack agent reads only through the dashboard API, never the database, and action tools are reserved for named admins on a list that starts empty.
  • Reduced attack surface. The agent connects outbound through Slack Socket Mode, so there is no public endpoint to probe or attack.
  • Data-loss safeguards. Deletions never run from an empty or partial API response, and every manual decision is kept in an audit history that survives each sync.
  • Validated, isolated data. Every API route rejects malformed input with a clear 400 response, and all records sit in PostgreSQL protected by row-level security.
  • Safe testing in production. Website checks fill forms with synthetic test data and never submit them, so no fake records ever reach live systems.

Tools and stack

TypeScriptNext.js 15ReactTailwind CSSSupabaseClaude Agent SDKSlack BoltPlaywrightVitestInstantly.ai APIGoogle Sheets APIGitHub Actions