Work / Flagship project
Commercial
Intelligence OS
AI-Enabled Commercial Intelligence & Field Sales Decision Support System
Turning fragmented market data into field-sales decisions — discovery, entity resolution, geospatial territory intelligence and prioritised field planning on one PostgreSQL spine.
Personal engineering & analytics project · 2026 · built solo
The problem
Prospecting isn't the problem. Deciding where to focus is.
A salesperson's day runs on a loop: search maps, copy to a sheet, research, call, visit, write notes, update the CRM, remember the follow-up. The project started from one question — how can a salesperson systematically identify and prioritise potential B2B accounts instead of searching businesses one by one?
Automating discovery answered the wrong question. It only speeds up step one. Lead generation is not commercial intelligence.
What broke once discovery was automated
- The same business returned by many searches
- Coordinates carrying no territory meaning
- Buyer and supplier prospecting treated identically
- Automated refreshes overwriting human CRM notes
- Prospects ranked, but routes still improvised
What the system had to become
Data → intelligence → action
A longer list of leads doesn't tell a salesperson which door to knock on first — or which doors are worth walking between.
How it evolved
- Lead discovery
- Entity resolution
- Structured database
- Geospatial intelligence
- Prioritisation
- Field planning
- CRM execution
- Outcomes
- Predictive intelligence
The last stage is future work, not built
Architecture · built
From market data to commercial action.
Sources
Raw market data
Google Places API
REST
Web & manual inputs
Sheets
Ingestion & resolution
n8n
Orchestrated runs
Scheduled
Entity resolution
External ID
Idempotent upsert
No duplicates
Run logs & errors
Auditable
Foundation
PostgreSQL
Source of truth
Supabase
Point-in-polygon
PostGIS
~300m zones
Spatial grid
Execution
Sales
Rule-based priority
Heuristic
Field plan & CRM
Safe sync
Raw market data → resolved business universe → geographically ordered field plan

528
Search configurations
200
Raw results
115
Unique supplier candidates
One supplier discovery test run. Entity resolution — not volume — is what turns raw API output into a usable business universe.

Geospatial intelligence · PostGIS · built
A lead list doesn't tell you where to go.


- 01
Coordinates
lat / lng from Google Places
- 02
Geometry
ST_SetSRID(ST_Point(lng, lat), 4326)
- 03
Territory resolution
ST_Intersects on territories.boundary · ORDER BY priority DESC
- 04
Micro-zone assignment
~300m spatial grid clipped to territory
- 05
Weekly field plan
Zone-clustered visit sequence
~300m
Micro-zone edge
64
Micro-zones · illustrated Beirut implementation
~59
Candidate visits / 5 days · one planning prototype
From “which prospect is best?”
To “which high-value prospects can I visit together?”
Spatial intelligence converts isolated prospects into geographically efficient field-sales opportunities.
Data ownership · CRM architecture · built
Automation should not destroy human intelligence.
System owns
What it discovers
Write-protected. Rebuilt on every run — always reproducible.
Salesperson owns
What drives the deal
Never overwritten by an automated refresh — field knowledge is not re-derivable.

Evidence · human-owned columns in the sales interfaceBusiness names, owners and contacts replaced with synthetic values
Idempotent
Every run is safe to repeat
Unknown stays unknown
Missing is recorded as missing
Interface ≠ database
Sheets is the UI, PostgreSQL is the truth
The assumption that broke · scoring architecture
4.8★ + 300 reviews ≠ a great B2B opportunity
Public popularity is not commercial potential.
The first scoring baseline was rule-based and leaned on whatever the public record offered. It ranked a well-reviewed single-location café above a neglected listing belonging to a multi-branch retailer. Consumer visibility was standing in for buying capacity — and they are not the same variable.
Weak proxies in the first baseline
rating · review_count
contactability · profile_completeness
category_fit
Signals that actually carry commercial weight
Captured in discovery — not scraped
Scoring maturity — one level built, two ahead
Level 01
ICP fit
“Is this business worth investigating at all?”
Level 02
Opportunity quality
“After discovery, is there a real commercial opportunity here?”
Level 03
Outcome-trained prediction
“Given past outcomes, what is the probability of conversion?”
Architecture lessons
- PostgreSQL is the source of truth.
- Spreadsheets are interfaces, not databases.
- n8n orchestrates; PostGIS handles spatial logic.
- Unknown information stays unknown.
- Workflows are idempotent — every run is safe to repeat.
- Commercial intelligence complements the CRM; it does not replace it.
- Real outcomes should eventually set the scoring weights.
Where it goes next · maturity model
From automation to a learning commercial system.
Implemented
- Buyer & supplier discovery engines
- Entity resolution and idempotent upserts
- PostgreSQL / Supabase source of truth
- PostGIS territories + ~300m micro-zones
- Weekly field planning
- Buyer & supplier CRM interfaces, safe sync
- Rule-based scoring baseline · run logging
Next
- Universal business intake
- Company-assigned lead ingestion
- Meeting intelligence & post-visit capture
- End-of-day review queue
- Activity and outcome dataset
- Opportunity-quality scoring layer
Not built
- Authorised corporate CRM integration
- Power BI commercial analytics
- Predictive conversion models
- Next-best-action engine
- AI commercial copilot
- Reusable, multi-company intelligence core
Public intelligence + field execution → Commercial Intelligence OS → human review → corporate CRM → outcomes → learning
Don't build a second CRM. The corporate CRM stays the system of record and accountability; the intelligence layer sits around it. Integration is future work, subject to organisational authorisation.
The goal isn't more leads.
It's better allocation of commercial effort.
Commercial Intelligence OS is a personal engineering and analytics project. It was not commissioned by, and is not owned by, any employer. Screenshots use synthetic business names, owners and contacts. Capabilities are labelled built, in development or future throughout; nothing on this page describes future functionality as current.
Interested in applying this to your market? Let's talk.