MarTech · Sales intelligence · Case study
TamTracker: B2B market intelligence SaaS with nine data integrations
Multi-tenant SaaS that scores target accounts on buying intent from LinkedIn Ads, HubSpot, Google Ads and six more sources, on serverless AWS.

- Client
- TamTracker is a B2B SaaS that helps sales teams define, analyse and track their Total Addressable Market using engagement signals.
- Team
- 4 engineers, 1 designer, 1 project manager
- Timeline
- Ongoing, active development
- Services
- Web development, Cloud and DevOps, AI and data, Enterprise software
- 9
- third-party integrations in production
- 27
- API route modules
- 13
- background job applications
- 20+
- alert types
In short
TamTracker aggregates engagement signals from nine advertising, CRM, email and web analytics sources to show B2B sales teams which target accounts are ready to buy. Innovation Insight built the entire platform: three React front ends, a 27-module Hono.js API, 13 background jobs, OpenAI-powered suggestions and an SST-managed serverless AWS stack with automated staging and production deployments. It is live at tamtracker.io and serves both direct customers and agency partners.
Where they started.
- B2B sales teams could not see which companies in their target market were engaging with the brand, because the signals lived in separate ad, CRM, email and web analytics tools.
- Daily syncs from nine third-party APIs had to produce accurate engagement deltas without double counting across runs.
- Agency partners needed to manage many client accounts, see revenue and get paid, on the same platform as direct customers.
- Rate limits on partner APIs and OAuth token expiry made unattended background syncing fragile.
The approach.
- Built a Turborepo monorepo with three TanStack Start front ends (customer, agency, admin), a Hono.js API on AWS Lambda and eleven shared services.
- Implemented nine integrations (LinkedIn Ads, HubSpot, Google Ads, ProspectPro, Zoho CRM, ActiveCampaign, MailerLite, LeadInfo, Bedrijfsdata) with OAuth, API-key and webhook auth flows and delta-based signal maths.
- Designed an event-driven sync pipeline: SQS queue, Lambda token refresh, ECS Fargate sync task, dead-letter queue with three retries and one-at-a-time concurrency to respect API limits.
- Created a plugin-based alert engine with seven-plus detectors and 20+ alert types, batched into scheduled email digests with opt-out handling.
- Added OpenAI GPT-4 features: weekly intelligence emails per organisation and an ICP-driven TAM suggestion engine with lookalike detection and AI ranking.
- Shipped an agency portal with client impersonation middleware, revenue tracking and Stripe Connect billing.
What shipped.
- Customer application with 30+ routes, agency portal with 25+ routes and an internal admin app
- REST API with 27 feature modules, Zod validation and organisation-scoped multi-tenancy
- 13 background job applications (7 consumers, 6 EventBridge cron schedulers)
- 35 Drizzle ORM schema files on managed PostgreSQL
- SST v3 infrastructure as code across 10 stacks with staging (eu-north-1) and production (eu-central-1)
- GitHub Actions CI/CD with Turborepo caching and automated database migrations
- Shared UI package of 37+ Shadcn/Radix components and custom widgets
- Sentry, PostHog and CloudWatch monitoring
How the engagement ran.
Context
Most B2B companies know their total addressable market as a spreadsheet of company names. What they cannot see is which of those companies are engaging with their ads, opening their emails or visiting their website this week. TamTracker centralises those signals into one intelligence dashboard, scores each company by engagement readiness and alerts sales teams to buying intent. Innovation Insight was engaged for full product development, from architecture to deployment, and continues to develop the platform.
What we built
- TAM management: CSV upload with intelligent field mapping and industry standardisation, a discovery module, AI-generated suggestions, overlap analysis over time and industry-level insights.
- Signal intelligence from nine sources, including LinkedIn Ads engagement, HubSpot company sync and email events, Google Ads clicks, IP-based visitor identification through ProspectPro, and connectors for Zoho, ActiveCampaign, MailerLite, LeadInfo and the Dutch company registry via Bedrijfsdata.
- An alert system with 20+ alert types, from signal spikes and industry momentum to expiring integrations and inactive users, delivered as scheduled digests on Tuesday to Friday mornings.
- An agency partner portal with client management, impersonation, revenue and income tracking, a strategy logbook and Stripe Connect onboarding.
- Weekly AI summary emails and a TAM suggestion engine that builds an ideal customer profile from the existing market, finds lookalikes and asks GPT-4 to rank candidates with reasoning.
- Shortlisting with stages and history, contact management with opt-in tracking, a live signal feed, CSV export to S3, a referral programme, guided onboarding and an internal admin dashboard.
Architecture and stack
| Layer | Technology | Why |
|---|---|---|
| Front ends | TanStack Start (React SSR), TanStack Router, React Query, Tailwind CSS 4, Shadcn/ui | Three applications share one UI package and typed data layer |
| API | Hono.js on AWS Lambda, Zod validation, middleware chain per route | Fast, edge-compatible handlers with tenant checks enforced before every handler |
| Data | PostgreSQL on RDS with Drizzle ORM, 35 schema files, JSONB signal metadata | Type-safe SQL, idempotent upserts and composite unique constraints for deduplication |
| Auth and billing | Better Auth with Google OAuth and email OTP, Stripe subscriptions, Stripe Connect | Role-based access for direct customers and agencies, payouts to partners |
| Jobs | SQS, Lambda consumers, ECS Fargate for long syncs, EventBridge cron, dead-letter queues | Reliable unattended syncing with retries and rate-limit-aware concurrency |
| Infrastructure | SST v3, API Gateway v2, CloudFront with Lambda@Edge, S3, VPC, GitHub Actions | Infrastructure as code with automatic staging and production deployments |
How we worked
The monorepo was organised into applications, shared services and shared packages from day one, which let integration work, alert detectors and AI features ship as independent modules. Each API module follows the same routes, handlers, validators and utils convention, and every background job pairs a cron scheduler with a consumer so it can scale and fail on its own. Staging deploys automatically from the staging branch and production from main, with database migrations run by the pipeline and Sentry reporting on every failed sync.
Integration work was the hardest part. Each source has its own auth model, API version quirks (LinkedIn needed both the REST and legacy V2 APIs) and rate limits, and the signal maths had to compute daily deltas without ever counting an engagement twice. Composite constraints on audience, source and date make every sync idempotent.
Scale and complexity
| Metric | Count | Detail |
|---|---|---|
| Frontend applications | 3 | User (30+ routes), agency (25+ routes), admin (5+ routes) |
| Backend API modules | 27 | Feature-based route modules with full middleware chain |
| Background job apps | 13 | 7 consumers and 6 cron schedulers |
| Database schema files | 35 | Auth, domain, integrations, alerts, analytics |
| Third-party integrations | 9 | LinkedIn, HubSpot, Google Ads, ProspectPro, Zoho, ActiveCampaign, MailerLite, LeadInfo, Bedrijfsdata |
| Infrastructure stacks | 10 | API, user, agency, admin, integration sync, alert, cron, TAM processor, TAM suggestions, storage |
| Alert detectors | 7+ | Signal spike, industry momentum, agency momentum, auth expiry, TAM relevance, inactive user, overlap decline |
What this means for your project
If your product depends on pulling data from several external platforms, the patterns here are directly reusable: OAuth flows with token monitoring, queue-based syncing with dead-letter handling, delta calculations that stay correct over repeated runs, and alerting that turns raw data into actions. Add multi-tenancy and partner billing and you have the skeleton of most B2B data products.
Innovation Insight can scope a similar platform in a one to two week discovery and typically delivers a first production release, with two or three integrations and billing, within four to six months.
What changed.
- Live at tamtracker.io with automatic staging and production deployments from GitHub.
- Nine production integrations with unified sync, retry and dead-letter handling.
- Two customer types served on one codebase: direct B2B accounts and white-label agency partners with Stripe Connect payouts.
- Zero-downtime deployment design on serverless AWS
Questions about this project.
How long does a multi-integration SaaS like this take to build?
TamTracker is an ongoing engagement that grew integration by integration. A first release with two or three integrations, billing and one front end typically takes four to six months; each additional OAuth integration with sync and signal logic adds two to four weeks.
What does it cost to run a serverless architecture like this?
Lambda, SQS and EventBridge bill per use, and the ECS sync task runs one at a time, so idle cost is close to the managed PostgreSQL instance alone. We size and forecast running cost during discovery.
Can you add agency or reseller billing to an existing product?
Yes. The agency portal, impersonation middleware and Stripe Connect payouts in TamTracker were built on top of the existing customer product, and the same pattern can be layered onto most multi-tenant SaaS.