Open to senior marketing leadership opportunities across MENA and Europe

Personal Project

Personal Project

Steveintel · Client Intelligence Engine

AI · Python · Claude API · 15 Modules

Steveintel: Autonomous Client Intelligence Engine

A company name is the only input. Fifteen parallel data modules, Claude analysis, and four output formats later, you have a brief ready to walk into a meeting with.

AI & AutomationPythonClaude APIFull-StackPersonal Build

Personal Project · Live in Production

3-4 min

Report Generation

From company name to full brief

15

Intelligence Modules

Running in parallel via asyncio

4

Output Formats

Web · PDF · Word · PowerPoint

~$0.54

Cost Per Run

Marginal cost per full brief

At $0.54 per run in API costs, a brief that replaces 3-4 hours of analyst research has clear margin at any service price above $50. The cost model supports both a freelance service (charging per brief) and a self-serve SaaS product (charging monthly per seat).

The Problem

The Problem

Pre-pitch research is slow, scattered, and inconsistent. Getting a clear picture of a company before a client meeting or agency pitch means hours across LinkedIn, Google News, SEMrush, ad libraries, and review sites: work that takes a senior analyst half a day and varies in quality every time.

The question agencies and consultants actually need answered fast: “who is this company, where are they weak, and what is my angle?”, had no automated, structured answer. I built one.

What It Does

What It Does

One company name in. A structured, sourced, meeting-ready brief out. The pipeline handles everything in between.

1

Resolve

The company name is resolved to a domain via Serper. A run is created in Supabase and the pipeline starts immediately.

2

Collect

15 modules run in parallel via asyncio.gather. Apify crawls LinkedIn company pages, job listings, reviews, websites, and blogs. Serper pulls news, competitor signals, financial mentions, and partnership signals. DataForSEO returns SEO traffic, keyword rankings, and on-page audit scores. Wikipedia and Wikidata enrich company fundamentals. Each module degrades gracefully. One failure never stops the run.

3

Analyze

Claude Sonnet 4.6 analyzes each of the 15 sections independently using structured prompts with strict JSON output schemas. Claude Haiku 4.5 scores news article sentiment in a batched call. A two-pass synthesis engine then receives all 15 completed analyses and generates opportunity gaps and a strategic pitch angle, reasoning across the whole brief, not just one section.

4

Deliver

Four outputs are generated and uploaded to Supabase Storage: a live 15-section web report, a branded PDF, an editable Word document, and a 15-slide PowerPoint deck. All four are delivered simultaneously via the React web app and Telegram. Shareable public links are generated per brief.

The 15 Intelligence Modules

The 15 Intelligence Modules

Thirteen data-driven modules feed two Claude synthesis modules. Each has a defined source and a single responsibility.

Module: Company Overview
Source: Apify playwright + Serper knowledge graph + Wikipedia
Module: Digital Presence Score
Source: DataForSEO OnPage audit
Module: SEO and Traffic
Source: DataForSEO Labs (UAE location-aware)
Module: Paid Media Footprint
Source: DataForSEO paid keyword metrics
Module: Social Media Intelligence
Source: Apify LinkedIn company page + posts
Module: Tech Stack and Martech
Source: Apify playwright custom signal detector
Module: Talent and Hiring Intelligence
Source: Apify LinkedIn Jobs
Module: News and PR
Source: Serper News API + Claude Haiku sentiment scoring
Module: Competitor Signals
Source: Serper Search
Module: Review Intelligence
Source: Apify Trustpilot and G2
Module: Content and Thought Leadership
Source: Apify playwright + blog scraper
Module: Partnership Signals
Source: Serper Search
Module: Financial Signals
Source: Serper + knowledge graph
Module: Opportunity Gaps
Source: Claude Sonnet synthesis (two-pass, receives all 15 analyses)
Module: Strategic Pitch Angle
Source: Claude Sonnet synthesis

System Architecture

System Architecture

Input

Company name or domain

A single string is all the pipeline needs to begin.

Orchestrator

asyncio.gather: 15 modules in parallel

One coordinator fans out to every module at once and waits for all of them, with graceful degradation per module.

Data Collection Layer

Apify

LinkedIn, jobs, reviews, website, blog

Serper

News, search, knowledge graph, financial signals

DataForSEO

SEO, traffic, keywords, OnPage audit

Wikipedia API

Founding data, description enrichment

Claude Analysis Layer

Sonnet 4.6 per section · Haiku 4.5 sentiment

Each section analyzed independently against a strict JSON output schema, with batched Haiku sentiment scoring for news.

Two-Pass Synthesis

Gaps and pitch angle receive all 15 analyses

The synthesis pass reasons across every completed section at once, not in isolation, to surface opportunity gaps and a strategic pitch angle.

Brief Assembly

Supabase: runs · sections · briefs · companies

Every run, section, brief, and company record is persisted to Supabase for history and shareable links.

Delivery

Web app · PDF · DOCX · PPTX · Telegram

All four output formats are generated and delivered simultaneously across the web app and Telegram.

Fifteen modules. One orchestrator. Web, PDF, Word, and PowerPoint from a single company name.

Two Ways to Run It

Two Ways to Run It

Web App

Input bar on the dashboard kicks off a run

Real-time 15-module progress as the pipeline runs

Tabbed brief viewer with per-section confidence scores

One-click PDF, DOCX, and PPTX export

Shareable link per brief

Telegram Bot

/analyze triggers the full pipeline

Live progress updates every 60 seconds

/section returns any of the 15 sections on demand

/export sends the PDF directly in chat

/history lists past runs

Screenshots

See It Running

Two views of the web app: the dashboard that lists every intelligence run, and the brief viewer that opens all 15 sections with their confidence scores.

Screenshot

Dashboard: Recent Runs

BrandScopeAI dashboard showing recent intelligence runs with company names, scores, and status

Dashboard: Recent Runs

The dashboard lists every intelligence run by company, with the overall score and current status at a glance.

Screenshot

Brief Viewer: 15 Sections

BrandScopeAI brief viewer showing 15-section intelligence report with confidence scores and opportunity gaps

Brief Viewer: 15 Sections

The tabbed brief viewer opens all 15 sections with per-section confidence scores and the synthesized opportunity gaps.

Screenshots show mock data generated for demonstration purposes.

Technical Depth

Technical Depth

Four engineering decisions that shaped the system.

Two-Pass Synthesis Engine

The two highest-value sections, opportunity gaps and strategic pitch angle, received no input in the original single-pass design because asyncio.gather fired all 15 modules simultaneously: the synthesis modules ran before any data module had returned. The fix splits the run into two passes: the 13 data modules are analyzed first, and their completed outputs are injected into the two synthesis modules in a second pass that reasons across the whole brief. Confidence on the gaps section jumped from 20.6 to 97.0.

UAE Location for DataForSEO

Switching the DataForSEO location_code from US (2840) to UAE (2784) returned 1,132,595 monthly organic ETV versus 45,643 on the US default, roughly 25x richer traffic data for MENA-region clients. The location is now configurable per run via settings rather than hard-coded, so the same pipeline serves both regional and global targets.

Custom Tech Stack Detector

Rather than pay BuiltWith's $100/month minimum, the tech stack module is a custom Apify playwright actor that scans script tags, third-party domains, inline HTML hints, meta tags, and HTTP headers to fingerprint a site. It detects Next.js, Google Tag Manager, GA4, the Meta Pixel, Cloudflare, and more at zero marginal cost beyond the Apify compute the pipeline already runs.

Parallel Async Collection

asyncio.gather runs all 15 collectors simultaneously. Run sequentially, a single brief would take well over 60 seconds just to gather data. In parallel, the entire run completes in 3 to 4 minutes, including Claude analysis, PDF, Word, and PowerPoint generation, and Supabase Storage uploads. Each collector degrades gracefully, so one slow or failing source never blocks the rest.

How It Is Built

How It Is Built

Analysis

Claude Sonnet 4.6 + Claude Haiku 4.5

Backend

Python 3.14, FastAPI, Celery, Redis

Data Collection

Apify, Serper, DataForSEO, Wikipedia API

Database

Supabase PostgreSQL + Storage + Realtime

Frontend

React 18, Vite, Tailwind CSS, Recharts

Bot

python-telegram-bot v22.8

Report Generation

python-pptx, python-docx, WeasyPrint

Infrastructure

Hetzner VPS, nginx, Let's Encrypt TLS, pm2

Hosting

Vercel (frontend), Hetzner (backend)

What I Built

What I Built

Every part of this system: architecture, code, prompting, deployment, and iteration, was built by me using Claude Code as the development environment.

Diagnosed and fixed a critical two-pass dataflow bug where the highest-value section (opportunity gaps) scored 20.6/100 because it received no input from other modules — post-fix confidence reached 97.0/100

Replaced a $100/month third-party API dependency (BuiltWith) with a custom zero-cost technology detector built on existing Apify infrastructure

Configured DataForSEO for UAE location rather than US default, returning 25x richer organic traffic data for MENA-region clients, a non-obvious configuration decision with significant brief quality impact

Designed the full system architecture across 15 parallel async collectors, Claude analysis layer, and four delivery formats

Built and deployed three pm2 services on Hetzner with nginx reverse proxy and Let's Encrypt TLS, running alongside an existing production service without downtime

Designed the two-pass Claude synthesis engine so opportunity gaps and pitch angle reason across all 15 completed section analyses simultaneously rather than in isolation

Built the full React web app with real-time run status via Supabase Realtime, 15-section tabbed brief viewer, confidence score badges, and one-click exports

Wired the Telegram bot with six commands including live progress updates every 60 seconds during a run and PDF delivery directly in chat

Built the complete delivery layer: WeasyPrint PDF, python-docx Word, python-pptx 15-slide PowerPoint, all auto-generated and uploaded to Supabase Storage per run

15 data sources. 15 parallel modules. One brief. Zero manual research. The full output is ready before a manual analyst finishes their first tab: web report, PDF, Word doc, and PowerPoint.

View Live System

Live. No password required.

Back to AI Systems