Morpheus
Morpheus is Payability’s automated outbound sales platform. It finds marketplace sellers who are likely to need faster access to their payouts, enriches them with publicly available contact intelligence, scores how acutely they feel payout pain, pushes them into HubSpot, and then keeps a human sales team supplied with a prioritised daily call list built from real engagement signals.
The platform is event-driven and serverless. Nothing runs on a server that waits for requests: everything is either a scheduled job, a queue consumer, or a container invoked on demand.
|
New here? Read System architecture for the shape of the system, then Business logic for the rules the system actually enforces. |
What the platform does
| Capability | Where it lives |
|---|---|
Discover sellers from marketplace data |
|
Enrich sellers with contacts, website, LinkedIn |
|
Score cash-flow urgency (payout-pain score) |
Second AI pass in |
Push companies, contacts, activities, tasks, deals into HubSpot |
|
Rebuild each rep’s daily call list from engagement signals |
Re-engagement handlers driven by BigQuery views |
Classify inbound email replies |
|
Line-type intelligence and Slack task escalation |
|
Multi-step LLM workflows on demand |
AgentCore runtime — Strands agents in a container |
Deployable units
The repository holds four independently deployed units. They never import each other at runtime — the only coupling is through SQS messages, the shared PostgreSQL database, and the shared Secrets Manager secret.
| Unit | Language | Deployed by | Purpose |
|---|---|---|---|
|
Python 3.12 |
CDK ( |
Container image running on Amazon Bedrock AgentCore — the on-demand LLM workflow runtime |
|
TypeScript |
CDK ( |
All AgentCore infrastructure — one stack, |
|
Python 3.12 |
SAM ( |
Five Lambda functions, four queues, the schedules, and the shared secret |
|
Python 3.12 |
SAM (as Lambda layers) |
Five shared libraries consumed by the Lambdas and the runtime |
The pipeline at a glance
flowchart LR
SS(["SmartScout API"])
BQ[("BigQuery\nHubSpot + app mirror")]
subgraph ingest ["Ingest and enrich"]
Scraper["λ enrichment-scraper"]
Q1[["EnrichmentPipelineQueue\nFIFO"]]
Scorer["λ enrichment-scorer"]
end
subgraph crm ["CRM integration"]
Q2[["CrmSyncQueue\nFIFO"]]
HubSpotFn["λ morpheus-hubspot"]
HS(["HubSpot CRM"])
end
subgraph channels ["Channel agents"]
Q3[["EmailAgentQueue"]]
EmailFn["λ email-agent"]
PhoneFn["λ phone-agent"]
Slack(["Slack"])
end
PG[("PostgreSQL\nSupabase")]
Bedrock(["Amazon Bedrock\nClaude / Nova"])
SS --> Scraper --> Q1 --> Scorer
Scorer --> PG
Scorer <--> Bedrock
Scorer --> Q2 --> HubSpotFn --> HS
HubSpotFn --> PG
BQ --> HubSpotFn
BQ --> Scraper
BQ --> PhoneFn
PhoneFn --> Q2
PhoneFn --> Q3
PhoneFn --> Slack
Q3 --> EmailFn --> PG
EmailFn <--> Bedrock
HS -.->|webhooks| Q2
Read the full walkthrough in Outbound funnel.
Documentation map
| Section | Contents |
|---|---|
Every domain rule the platform enforces: discovery filters, enrichment, scoring, re-engagement segments, priority formulas, ownership, escalation |
|
The Bedrock AgentCore container: workflow registry, agents, tools, memory, invocation contract |
|
One page per function — triggers, handlers, configuration, failure behaviour |
|
The complete event catalog, payload schemas, routing keys, and how to add one |
|
|
|
Domain model, ORM models, repositories, enums, BigQuery warehouse and views |
|
CDK stack, SAM template, queues, schedules, layers, IAM, secrets, observability |
|
Forward-looking design documents for the agent estate and the BDR motion |
Environment facts
| Fact | Value |
|---|---|
AWS account |
|
AWS region |
|
CDK stack |
|
SAM stack |
|
Shared secret |
|
Operating subscription (tenant) |
|
HubSpot portal |
|
BigQuery project |
|
Bedrock models with the us. prefix are invoked through cross-region inference
profiles. See model IDs.