Autonomous go-to-market engine for the full Misraj AI product portfolio (9 sellable products) · GCC enterprise · three GTM motions
Status: Operational · 2026-07-10
The system that started as "Baseer GTM" is now the go-to-market engine for the whole
Misraj AI product portfolio. A 24/7 multi-agent pipeline finds the right GCC enterprise accounts, scores
each one against all nine sellable products (not just Baseer), drafts personalized outreach in the
product's own voice, runs dedicated partnerships/BD and expansion (upsell/cross-sell) motions
alongside cold sales, and routes every outbound action through a human approval gate — while a dashboard gives
the operator full visibility and control, including an editable per-product ICP config that now actually steers
the agents.
9
sellable products in the catalog
3
GTM motions live — cold sales · BD/partnerships · expansion
059
migrations head (up from 055)
0
un-approved sends possible
Milestone update · 2026-07-10 (late) — Expansion ships, the ICP Map goes live and actually steers the agents, and email routing splits by product
Same day, later wave. The multi-product ecosystem (P1–P7, documented below) finished with P6 closing;
on top of that foundation this wave shipped the third GTM motion (Expansion), an editable ICP Map
that operators can use to steer sourcing/signals/enrollment without a code change, a round of multi-product
dashboard polish, and per-product outbound email domains. Nothing here is exploratory — the Expansion agent and
the ICP Map are both live, human-reviewed surfaces with no autonomous outbound action.
Expansion (upsell/cross-sell) — the third motion Done, task #48/#50
A crm.lead-only Odoo reader pulls closed-won deals and reconciles them into accounts
(migration 058 widens relationship_role to prospect|customer|partner|both and
adds customer_deals/account_products/expansion_opportunities).
The expansion_opportunity agent reasons over cross-sell adjacency against the other 8 products —
read-only, capped at 3 candidates per run, with government-adjacent accounts forced onto a manual track
twice over (prompt and projection).
A weekly weeklyExpansionScan job + the new /expansion dashboard (board +
drawer) surface it to the operator. Output is recommendations only — no autonomous send anywhere in
this surface.
This closes what the prior milestone below still listed as "Planned, not built" — existing
relationships like MNGHA, KAEC, Sukuk Capital, Deloitte, and Libya Diwan can now be worked as expansion
once an operator makes the un-park call.
ICP Map — an editable, agent-steering control surface Done, tasks #51 + #81
The new /icp dashboard page lets an operator edit each sellable product's personas, wedge
line, priority rank, status, signal queries, and booking URL — reusing the existing products catalog and
account_product_fits, no new tables.
Critically, those edits now reach the running agents. Before this wave's follow-up fix,
dailyAccountSourcing's fit matrix and dailySignalsScan's per-product rotation
read the compile-time product catalog, not the DB row an operator had just edited — so an ICP Map change
was invisible to the pipeline. Sourcing, signals, and enrollment (including the Worker's backstop) now
all read the DB, with a same-payload fallback to the compile-time catalog only when the DB has zero
sellable rows.
The daily contact-enrollment draft also now prefers the product's DB-configured booking URL, so an
ICP Map edit to the booking link is live end to end, not just on the page itself.
Product filters and fit badges now surface on the Journey Board, Accounts, Contacts, and Signals pages
(#60); Market Analysis gained a company-level Misraj vs. the competitor landscape section (#61)
plus a per-product filter that scopes the competitor watch and signal feed while keeping the company-wide
view always visible (#79, migration 059 tags market_intel_signals by product).
The Signals Hub is now paginated (12/page) with a dedicated Archived tab (#62, migration 057), and a
daily Signal Archivist job auto-archives stale/cold signals so the feed stays current without
manual cleanup (#63).
A system-wide copy pass rebranded 81 strings from Baseer-only framing to the Misraj ecosystem,
and renamed the visible "Baseer fit" label to "Misraj fit" — the label operators actually see on
every account card.
Non-Baseer products (Kawn, Seamless Enterprise, Workforces, and the rest) now send sales email from
misrajtech.com through a second, dedicated Resend account, with the signature booking
link pointed at misrajtech.com/book. Baseer is unchanged — trybaseerocr.com,
its own Resend account, trybaseerocr.com/book. The sender resolver fails closed (never
silently falls back to the wrong account) if a domain's key is missing.
Since misrajtech.com's inbound mail isn't live yet, its sends carry an interim Reply-To
the verified trybaseerocr.com inbox so replies are never lost.
Known follow-ups from this wave (not done): the misrajtech.com inbound MX record is still
pending (the Reply-To workaround above covers the gap); three older task-creation call sites in
agent-runner.ts don't yet stamp a productSlug and default to Baseer; the E2E
agent-testing harness (task #64) is designed (PLAN-e2e-agent-testing.md) but not built. None of
these block anything shipped this wave.
Milestone update · 2026-07-09 to 07-10 — Misraj becomes a multi-product GTM system
This wave is the largest reframe since launch. The pipeline was built and hardened Baseer-only; it is now
deliberately generalized so the same execution spine can sell any of Misraj's nine products to the right buyer,
runs a second motion (partnerships/BD) end to end, and has a fully designed (not yet built) third motion
(expansion into existing customers). Contact supply — the thing that had been silently starved for weeks — was
also root-caused and fixed this wave.
The multi-product ecosystem (P1–P7) Done
A products catalog (9 sellable products — بصير/Baseer, Seamless Enterprise, كَون/Kawn, Workforces,
Nova-star, 0plus, Compliance RAG, custom app development, Ark) and a new account_product_fits table
replace the old single-product assumption; a DB trigger keeps the existing accounts.icp_score
reconciled to max(fit_score), so nothing that already read icp_score had to change.
Proven in prod:account_product_fits holds 288 rows across all 9 products (up
from 264 all-baseer). Elm, NHC, and Tawuniya each carry a live 9-product fit matrix with
business-specific rationales (e.g. Tawuniya → Compliance RAG scored 62 for SAMA regulation; Elm → Nova-star
scored 70).
Sourcing, contact targeting, the copywriter, the orchestrator's review checks, and funnel reporting are
all now product-aware end to end: a candidate account is scored against the whole catalog, its
contacts are targeted with that product's own personas, its outreach draft leads with that product's own
wedge (not a generic Baseer pitch), and the funnel can be read broken out by product.
The last open phase — per-product signals/market-intel query rotation (P6) — closed this wave
(commits 5842c5e/583eff2): the daily signals scan now rotates its Twitter/news/
LinkedIn queries across the sellable catalog instead of scanning only Baseer/OCR terms every day, and every
surfaced signal is tagged with the product it was found under.
Result: all seven phases of the multi-product plan (P1–P7) are now done and deployed.
Partnerships / BD — a second GTM motion Done, task #47
A new BD/Partnerships agent sources exploratory partnership opportunities across all 10 partner
types (reseller, technology, systems-integrator, and more) — deliberately exploratory-only, with
no pricing or commercial terms drafted by the AI.
Accounts can now be tagged customer, partner, or both; a
weekly sourcing job runs every Sunday 07:15 Riyadh; a new Partnerships tab on the dashboard
gives the operator a read/curate board.
Fully human-gated — there is no send or draft action anywhere in this surface; a government-program
partner candidate stays on a manual track even after approval (no contacts enrolled, channel forced to
manual).
Expansion — the third motion Done — see the 2026-07-10 (late) update above
This card is kept as the historical record from the 2026-07-09/10 milestone below, written while
Expansion was still planned. It has since shipped in full — see "Expansion (upsell/cross-sell) — the
third motion" in the milestone update above this one for the built version.
The point of this motion remains: accounts like MNGHA, KAEC, Sukuk Capital, Deloitte, and Libya
Diwan are existing relationships, not cold prospects, and should be approached as expansion now that
it's live. MNGHA specifically is a 3-product customer already, but was auto-parked with the
government-account exclusion — it still needs an explicit un-park + "existing customer" tag, pending an
owner decision (the engine shipping doesn't auto-resolve this operator call).
Proposal generator + Vault versioning Done
The deck generator now spans the full ecosystem with fit-driven product selection — a capped
3–6 product cards per deck instead of always rendering the whole catalog — plus an optional commercial
slide and a mandatory "client need" slide.
Fixed a single-language bug where an Arabic deck's RTL styling was contaminated by English-only override
CSS.
A new owner-only force-redeliver route regenerates and re-pushes a corrected deck to its existing
Vault link without touching Odoo/email/LinkedIn.
The separate Vault app (report-platform, a different repo, not touched by this wave) now
versions every deck edit at the same URL — verified live on the Aramco deck (a re-upload created version 2
at the same link).
Contact-supply recovery Done, root-caused
Root cause found: the runner was calling Apollo's now-deprecated search endpoints (HTTP 422),
silently starving every account-based contact-discovery of Apollo data since launch — the entire prior
contact base had been migration imports, not pipeline-sourced. Fixed to call Apollo's current REST API
directly.
Unblocked the orchestrator review queue (a signals-table upsert bug and an over-tight relay timeout were
head-blocking every discovery/signal/market-intel output behind one stuck item); added an LLM-relay
priority queue so contact-supply work jumps a backlogged relay instead of waiting in line.
Made the email-first pivot mandatory (not advisory) when a LinkedIn-dormant executive fails the
activity gate, and loosened the reveal-corroboration gate so a verified corporate-domain email counts as
sufficient on its own — raising yield from the newly-fixed Apollo path.
misrajtech.com + infra/UX Done
misrajtech.com now redirects to misraj.sa, with its own neutral /book Cal.com link for
every non-Baseer product conversation (Baseer keeps trybaseerocr.com/book).
Outreach emails now render as real HTML with hyperlinked calls to action; the Approvals dashboard preview
is WYSIWYG (the exact rendered body + real sender signature); Approvals and Journey pages now cross-link.
The LinkedIn booking link is now gated to post-engagement only (a reply, a positive signal) — never
offered on a first-touch or bare-acceptance message.
Current status — what's done vs. pending
Item
Status
P1 — Products catalog + fit foundation
Done · migrations 052–054
P2 — Per-product fit scoring & sourcing
Done · proven in prod · 288 fit rows / 9 products (migration 055)
P3 — Per-product contact targeting
Done + deployed
P4 — Copywriter & orchestrator product rules
Done + deployed
P5 — Proposals & solution-area alignment
Done · shipped early via the Aramco deck overhaul
P6 — Signals/market-intel per-product alignment
Done · closed 2026-07-10
P7 — Funnel-by-product reporting
Done + deployed
BD / Partnerships agent + dashboard (task #47)
Done
Expansion motion (task #48/#50)
Done + deployed · shipped 2026-07-10 (late), migration 058 — see the milestone update above
Done + deployed · shipped 2026-07-10 (late), migrations 057/059 — see the milestone update above
Phase-3 agentic upscale
Planning only · no implementation, sequenced after the ecosystem
MISRAJ OS blueprint
Planning only · no implementation, sequenced after Phase-3
Phase-3 horizon (planning only, nothing built). Two forward-looking plans now exist alongside the shipped
work: an agentic upscale (Agent Theater, Ecosystem Galaxy, Account Brain, critic passes, a Roundtable-style
@mention console) and a MISRAJ OS blueprint — generalizing this GTM system into a whole-company operational
OS (a Company Graph, a permissions layer, SOPs as first-class nodes, humans and agents as peers). Both are
explicitly sequenced to start only after the multi-product ecosystem is done, and both plans themselves flag the
LLM relay's ~1 request/minute throughput ceiling as the hard constraint on how far either vision can scale before
more inference capacity is added.
Data & scale (as documented)
~260 accounts / 225 contacts loaded (V2 migration + old-prospect files), plus new net-new rows
landing daily since the sourcing→contacts projection was fixed; 23 government accounts parked
(excluded from automated discovery — Apollo has near-zero Saudi-gov coverage).
288 account×product fit rows across all 9 products; 87 PR contacts (32 individuals + 55
outlets); 7 competitors tracked.
Schema at migration 059 as of the 2026-07-10 (late) wave (up from 055); ~1,458+ automated
tests passing as of the last documented full run (2026-07-08) — an exact current count was not
re-verified in this or the following docs-only pass.
What's next
Owner decision on un-parking MNGHA (and similar existing relationships) as "existing customer" — the
Expansion engine (task #48/#50) is now live, but this specific tagging call is still pending.
Bring the misrajtech.com inbound MX record online to retire the interim Reply-To workaround; stamp
productSlug on the three older agent-runner.ts task-creation sites that still
default to Baseer; build the E2E agent-testing harness (task #64).
Watch the P4 product-match copy checks and the P6 signal-rotation change through their first live week
before treating either as fully steady-state.
Milestone update · 2026-07-08 — the social channel gets a voice, a reply, and a freshness rule
Today's wave sharpened the demand-and-brand side. The content voices were corrected and made
distinct across three accounts, Norah's X account went from draft-only to real, gated
auto-posting, the operator can now reply as Norah directly on a live signal, the Signals
Hub was fixed to pull from all three sources at once (news had been coming back empty), and a
system-wide recency rule now stops the machine from ever studying or engaging stale content.
Everything new is fail-closed and approval-gated, exactly like the sales spine.
Three distinct content voices Corrected
The content planner now writes in three clearly separate voices: Sara (bilingual
Misraj founder), Rawan (Arabic business-development / digital-transformation), and
Norah — corrected today to an independent Saudi AI enthusiast, not a Misraj voice.
Norah's content was regenerated as broad AI interest — trends, tools, papers, and ideas she
finds genuinely useful — with no product pitching and no Misraj/Baseer affiliation. This keeps
her account authentic rather than a disguised brand channel.
Norah X auto-post Live · fail-closed
Norah's approved, scheduled posts now publish to X automatically through twitterapi.io — no
second browser, no manual copy-paste.
Gated in order: off unless TWITTER_AUTOPOST_ENABLED is exactly on, a
5 posts/day cap, optional business-hours-only window, operator-approved items only,
kill-switch/global-pause respected, and idempotent (never double-posts). Drafts never auto-post.
Signals: "reply as Norah" Live · approval-gated
On any Twitter signal, the operator can now draft a reply in Norah's voice, edit it, and —
after an explicit approval — have it posted as a real reply to that tweet.
The send clears the same execution gate as every other outbound action (content safety,
exact-approval match, reply-target guard, kill-switch, idempotency) and is off unless
TWITTER_REPLY_ENABLED is on. Recorded in a dedicated table (migration 047).
Signals Hub: multi-source + recency Fixed
The scan now pulls Twitter, news, and LinkedIn together — a bug that returned zero news
was fixed by parsing the news RSS feeds server-side, so all three streams flow into one board.
A new rolling recency rule (migration 048, default 7 days) drops stale content at every
layer — scan, projection, and the surface — so the system only ever studies, replies to, or retweets
recent content, never a months-old post it just happened to discover today.
Quality & data model
~1,458 automated tests passing (up from ~1,400), covering the Twitter auto-post and
reply-as-Norah paths, the multi-source scan, and the recency gate.
Database schema is now at migration 048 — the twitter-reply drafts table (047) and the
signal recency column (048), both additive and fail-closed.
What's next
Flip on Norah's auto-post and reply flags once the first approved items are queued, and watch the
first live posts and replies land cleanly.
Tune the 7-day recency window per source if a channel proves faster- or slower-moving than the default.
Milestone update · 2026-07-07 — the pipeline actually produces contacts, and the content channel goes live
Yesterday the outbound channels went live; today the machine that feeds them was rebuilt. Approved AI
outputs now become real database rows (they never did before), stalled contact-discovery loops were fixed, a top
cohort of executives was moved onto an email-first track, the message-drafting funnel was un-jammed and re-voiced,
and LinkedIn content auto-publishing went live under a strict safety envelope. We also had a serious production
incident — a test wiped the live database — which we detected, fully recovered, and permanently prevented. Full
detail below.
Contact-supply backbone Rebuilt
The core gap is closed: an approved sourced account or a discovered contact now lands as a real net-new
row (the sourcing → accounts → contacts projection). Before today, approved AI outputs were reviewed
and then evaporated — nothing became a contact the outreach engine could act on.
Contact-discovery is now scheduled daily and its runaway loops are fixed — tasks that used to churn to
an 18-minute timeout now converge, with a per-task-type tool-round budget and a valid "found none" result.
A broken linkedin_profile_activity tool (was passing the wrong identifier) was fixed, so the
LinkedIn activity gate that disqualifies dormant profiles works again.
Email-first for 17 top executives Live
An email-first exec gate now routes LinkedIn-inactive GCC decision-makers to email instead of a dead
LinkedIn invite. A deterministic Apollo reveal-and-enroll pass ran on the stuck cohort.
11 of 17 executives had a verified email revealed via Apollo and were enrolled on the email channel
(e.g. geidea, Bank Albilad, Etihad, Jeel, ALDAR).
6 had no Apollo email and were returned to the LinkedIn track — including a Deputy Minister who
is now flagged for a manual, human-owned approach rather than automation.
Message-draft funnel Repaired & re-voiced
Outreach drafts were silently quarantining on a partial output shape — fixed, so a valid draft now
reaches review. The orchestrator review path that 500-errored on a re-drafted touch is now an idempotent
supersede.
9 outreach drafts were regenerated in the new voice and are flowing to the approval queue.
New copywriter rule: no targeting-rationale openers ("given your role/segment…"), and a brief,
recipient-first Misraj intro so a cold contact knows who is reaching out — context that earns the pitch, not a
sender-centric headline.
Edit-before-approve + a real learning loop Live
The operator can now edit an AI draft before approving it directly on the approval dashboard, instead
of only approve/reject.
Every edit is captured as a structured learning signal (original AI text vs. the operator's final text)
in a new draft_edit_feedback table — the single highest-leverage input for teaching the copywriter
what "good" looks like. This closes a gap the 2026-07-04 audit flagged: the learning loop had no outcome linkage.
Sourcing now biases to private-sector GCC enterprises. Apollo has near-zero coverage of Saudi government
ministries and authorities, so pure government bodies are now excluded from the automated pipeline (they were
producing unreachable, un-enrichable dead ends) and are handled manually where they matter. Commercial, state-owned
companies stay in scope — this sharpens the machine on the accounts it can actually reach and convert.
LinkedIn content auto-publish Live · safety-envelope
Sara's and Rawan's approved, scheduled LinkedIn posts now publish to their real personal feeds
automatically. LinkedIn has no posting API, so this drives the logged-in browser session through the existing
MCP (a small additive create_post tool installed on both seats) — no second browser, no re-login.
Fail-closed by design: off unless explicitly enabled, and every publish must clear a stack of gates —
1 post/day/account, business hours only (Sun–Thu, 09:00–17:00 Riyadh), operator-approved items only,
kill-switch/global-pause respected, idempotent (never double-posts). Drafts are never auto-posted.
Personal-account voice + weekly performance review Live
The content planner was re-grounded on each person's real voice (read live from their accounts). Sara's
and Rawan's posts broadened from Baseer-only to the whole Misraj ecosystem (Arabic-AI thought leadership,
not a product ad); Norah's X account is treated as an independent Saudi AI enthusiast — broad AI-interest
content, not affiliated with the company (operator correction 2026-07-08).
A Thursday weekly content-performance review now captures per-post engagement. Twitter/X metrics are
read for real; LinkedIn per-post metrics are stored honestly as unavailable via the LinkedIn MCP (it
exposes no per-post read) rather than fabricated.
Incident — detected, recovered, and permanently prevented. On 2026-07-07 a test run was accidentally pointed at
the production database and executed drop schema public cascade, wiping the live data. It was
caught immediately and fully recovered via Neon point-in-time restore; a post-restore verification confirmed the
data intact (225 contacts, 260 accounts). A permanent, fail-closed test-safety guard now blocks any test from
ever touching production — tests refuse to run against a production connection and CI runs with no database URL at
all (commit 0a9dcb4). We report this plainly because it is exactly the class of risk decision-makers
should see how we handle: it was contained, reversed with zero lasting loss, and closed off so it cannot recur.
Quality & data model
~1,400 automated tests passing (up from ~1,202 yesterday), covering the new projection, enrollment,
approval-with-edits, and auto-publish paths.
Database schema is now at migration 046 — adding draft-edit learning capture (045) and per-post content
metrics (046) on top of the approval↔AI-draft linkage (042).
What's next
Watch the first live auto-published LinkedIn posts land cleanly, then loosen the 1/day cap only after several
clean posts with no account warning.
Feed the captured draft-edits back into the copywriter so the learning loop starts improving drafts, not just
recording them.
Work the email-first exec cohort's first approved sends, and progress the manual Deputy-Minister track.
Milestone update · 2026-07-06 — the biggest go-live day yet
In the last 48 hours the two channels that actually generate pipeline — outbound LinkedIn and inbound CRM leads —
both went live in production, the approval funnel that connects a drafted message to an actual send was found broken
end-to-end and repaired the same day, and the whole system passed a five-flow safety audit. Here is exactly what
changed and what is still open.
LinkedIn outreach Live
Connection requests now send from Sara's and Rawan's own LinkedIn seats, capped at 20 invites/day and 100/week per seat, with ban-safety pacing (3–8 minute randomized gaps between invites, max 8 per batch).
The kill-switch blocking all LinkedIn sends was deliberately turned off today, with an audited database record of the change and who made it.
First live invites are scheduled from 09:00 Riyadh time today, 2026-07-06.
Inbound CRM pipeline Live
New CRM leads in Odoo are now automatically researched by an AI agent, turned into a branded proposal deck, and posted back to the CRM as an internal note for sales — no manual work.
First lead through the full pipeline: Saudi Aramco, with a live, ready-to-share proposal deck link generated automatically.
Nothing is emailed to the lead directly — the only external action is an internal CRM note visible to the sales team.
Approve-to-send funnel Repaired
Found and fixed today: approvals were not actually arming anything to send — a broken link between "you approved this" and "the system sends this" meant zero approved messages had ever gone out. That link is now rebuilt and verified end-to-end.
Every seat now sends from its own identity — sara@trybaseerocr.com and rawan@trybaseerocr.com — with a consistent bilingual sign-off, replacing a shared generic address.
Safety audit Passed
A full audit of every live flow — LinkedIn, email, inbound, PR, and the agent runtime itself — ran today, producing a 16-fix hardening wave shipped the same day (pacing bugs, stuck-task recovery, duplicate-send protection, and more).
1,202 automated tests passing (up from roughly 1,072 a week ago), plus new process-supervision watchdogs that keep the agent runner, scheduler, and LinkedIn bridge alive and self-restarting.
Cost discipline. The Prospeo email-lookup subscription has been cancelled — a $59/mo Apollo plan with a hard
daily reveal budget, plus the free LinkedIn and web-research tools already in the system, now covers contact
enrichment. Provider order is Apollo first, LinkedIn read-only second, web search/scraping third — no paid lookup
is spent until the cheaper options are exhausted.
What's next
Confirm today's first live LinkedIn connection sends actually went out (recorded as scheduled, not yet confirmed complete).
Verify the Aramco CRM note actually posted inside Odoo (the write-back succeeded on the deck side; the CRM confirmation id came back empty and needs a manual check).
Finish wiring bounce/complaint handling for the new sara@ / rawan@ email addresses so a bounce automatically stops outreach to that contact.
Bring PR approvals onto the same single approval system as LinkedIn and email, for one consistent audit trail.
1 · For the decision-maker: what we have built
We have built a complete, automated sales-and-marketing machine for the whole Misraj AI product
portfolio — not a prototype, and not a single-product tool. It runs continuously on production infrastructure and
covers the full GTM cycle across three distinct motions: cold direct sales (the original, hardened
pipeline, described below), partnerships/BD (a second agent + dashboard tab, done), and expansion into existing
customers (fully designed, not yet built).
The outbound sales engine (Phase 1)
Sourcing — discovers GCC large enterprises in document-heavy industries (banking, insurance, government, telecom, healthcare).
Qualification — a deep ICP rubric scores every account/contact and disqualifies SMEs, off-segment, and non-GCC targets automatically.
The safety guarantee. No email, LinkedIn message, tweet, or PR pitch can ever leave the system without an exact,
owner-approved match. LinkedIn connection requests auto-execute after safety checks; everything that carries a message
waits for approval. A global kill-switch halts all outbound instantly, and volume caps protect the accounts and email domain.
Apollo sourcing fixed at the REST layer; journey state machine, approvals, and execution rails all live
Qualified accounts
~260 loaded
Real GCC targets across Saudi/UAE/Qatar; 23 government accounts parked (private-sector bias); net-new rows now land daily via the sourcing→contacts projection
Multi-product fit scoring
Live · proven in prod
288 account×product fit rows across all 9 products (up from 264 all-Baseer); icp_score auto-reconciles to max(fit)
Marketing engine
Deployed
Signals (now rotating per-product), market analysis, content calendar, PR — all live
Every step writes to Neon; nothing is implied. Malformed or unsafe outputs are quarantined, not shipped.
The two runtimes
Hermes agent runtime — runs the LLM reasoning for every agent on the shared Hermes/OAuth configuration (no per-agent API keys). A 1-minute relay carries each agent's request to the model and back.
Cloudflare edge — the API worker (business logic, approvals, execution, a 5-minute maintenance cron) and the dashboard, both close to GCC users.
Every agent output, review, approval, send, and state change is recorded — the dashboard is a live window onto Neon, never a guess.
Typed status constraints and idempotency keys make the pipeline crash-safe.
3 · The agents — who does what
Twenty specialized roles, each with its own instructions, allowed tools, and hard safety constraints. They never
talk to each other directly — they collaborate through data and one referee (the Orchestrator). The two
newest roles extend the system beyond Baseer-only cold sales: a dedicated BD/Partnerships agent, and a lead-research
agent that drives inbound CRM leads into an auto-generated proposal.
Sales pipeline agents
Agent
Job
Tools
Account Sourcing
Discover GCC enterprise accounts that fit the ICP
Apollo · web search · ScrapeGraphAI
Contact Discovery
Find reachable decision-makers at sourced accounts
Apollo · LinkedIn (active-only) · Prospeo
Enrichment
Complete + verify account/contact data with evidence
Apollo · Prospeo · web research
Account Intelligence
Deep account research: digitization signals, tech stack
Apollo · ScrapeGraphAI (Arabic-aware)
ICP Strategist
Refine targeting from performance data
Analytics reads
Outreach Copywriter
Draft personalized, evidence-grounded outreach
Contract-producer (no sends)
SDR Sequence
Plan multi-touch cadences
Sequence planning
LinkedIn — Sara
Propose LinkedIn actions from Sara's account (read-only)
LinkedIn search + activity gate
LinkedIn — Rawan
Propose LinkedIn actions from Rawan's account (read-only)
LinkedIn search + activity gate
Booking & Pipeline
Handle bookings, prep notes, pipeline health
Cal.com reads
Safety & Booking
Enforce booking-driven stop rules
Contract-producer
Learning & QA
Weekly performance review + learning loop
Analytics reads
GTM Orchestrator
The quality gate — reviews every output, decides approve / route / reject / spawn children
Evidence + policy context
Demand & brand agents (Phase 2)
Agent
Job
Tools
Social Listener
Scan Twitter/X, community, GitHub for Baseer-relevant signals
TwitterAPI · news RSS · read tools
Twitter Engagement (Norah)
Draft replies to relevant tweets (approval-gated, Arabic-aware)
TwitterAPI read → draft only
Market Intelligence
Monitor competitors, research papers, tenders, news
News RSS · arXiv · ScrapeGraphAI
Content Planner
Weekly content calendar for Sara/Rawan/Norah
Research + persona validators
PR Outreach
Draft per-outlet press pitches from the GCC media list
Contract-producer (approval-gated)
Multi-product & partnerships agents (new this wave)
Agent
Job
Tools
BD / Partnerships
Sources exploratory partner opportunities across all 10 partner types (reseller, technology, systems-integrator, etc.) — no pricing or commercial terms
Apollo · web search · contract-producer (no sends)
Lead Research
Researches inbound CRM (Odoo) leads and drives the auto-generated Vault proposal deck
Web research · ScrapeGraphAI · deck generator
Product-fit scoring isn't a separate agent role — the existing Account
Sourcing agent now scores every candidate against the whole 9-product catalog in the same pass; a
backfill-only product_fit_audit task type reuses that same prompt to re-score an already-sourced
account.
4 · How the agents interact — with each other, Neon, and the dashboard
Agent ↔ Agent (via the Orchestrator)
Agents never call each other. A sourcing agent's approved accounts become child tasks the Orchestrator
spawns for contact-discovery; approved contacts spawn enrichment; enriched contacts spawn outreach drafts. Depth is
capped (≤3), duplicates are deduped, and only whitelisted task types can be spawned — so no runaway loops.
The runtime claims a queued task from Neon, gives the agent its data + tools, and records the typed output back to
Neon — where it is schema-validated. A valid output moves the task to awaiting orchestrator review; an
invalid one is quarantined. Heartbeats and a stale-task reaper keep the 24/7 loop crash-safe.
Agent ↔ Dashboard (you)
When an agent proposes something that sends — a message, reminder, tweet, or pitch — it becomes an
approval item you see on the dashboard. You approve, reject, or request an edit. Only your approval,
matched exactly to the drafted content, lets the execution layer send it. The dashboard also shows agent health,
the task board, quarantine, relay status, and the full contact journey for every prospect.
The four prospecting sources
Apollo — primary structured account + people search.
Web search — open-web discovery of companies and Vision-2030/digitization signals.
ScrapeGraphAI — deep, Arabic-aware extraction of evidence from a candidate's own web presence.
Every finding, from any source, must clear the ICP rubric before it enters the pipeline.
5 · Safety & control
Control
What it guarantees
Exact-match approval
A send only fires if an approved record matches the drafted message, target, channel, and timing exactly.
Global kill-switch
One action halts all outbound instantly; resuming is owner-only.
Volume caps + warm-up
LinkedIn ≤100 invites/week per account; email ramps gradually and self-throttles if bounces rise.
Suppression & stop rules
Bounces, complaints, replies, and bookings automatically stop further outreach to a contact.
Role-based access
Sensitive actions (autonomy level, pause-clear) are owner-only; every change is audit-logged.
Read-only agents
Agents propose; they cannot send. Only the policy-gated execution layer talks to providers.
6 · Bottom line
Misraj AI now has an end-to-end GTM system that a solo operator can run across the whole product
portfolio, not just Baseer: it discovers and qualifies the right GCC accounts, scores each one against all nine
sellable products, runs a second motion for partnerships alongside cold sales, builds the outreach and proposals in
the right product's own voice, and executes only what you approve — across LinkedIn, email, social, content, and
PR — with full visibility and hard safety rails. The multi-product foundation (P1–P7) is now fully shipped, all
three GTM motions (cold sales, partnerships/BD, expansion) are live, and the ICP Map gives an operator a real
steering wheel over sourcing/signals/enrollment; the next frontier, further out, is the Phase-3 agentic-upscale
and MISRAJ-OS visions.