Builds matched advertising audiences from our own CRM — GCC hotel chains for Hospitality account-based campaigns, big-box buyer roles for OEM — and uploads them to LinkedIn, every batch human-reviewed first.
Per batch: the full list contents to the B2B owner for review, then — on approval — the upload confirmation with match rates.
This is both an edit and a data export, which is why it's deliberately last in the sequence: every upload approved batch-by-batch after the list is reviewed; business contacts only, never consumer data; and a UAE data-privacy (PDPL) posture check with Rajiv before the very first upload — flagged, not assumed.
The B2B owner defines the audience
From CRM segments — business contacts only
Full list contents, before anything leaves
Per batch
Uploaded; match rates reported
For implementers and the technically curious. The full build sheet — verified queries, thresholds, and build notes — lives on the specs page.
| System | Role in this loop |
|---|---|
| Odoo 19 CRMread-only connection | The live CRM. The loop reads deals, activities and teams through a read-only connection — writes are technically impossible on this credential. |
| LinkedIn / Metamatched audiences | The upload targets — hashed-list matching on the platforms' standard mechanisms. |
| Agent Vaultcredential store | Where API keys live. Loops get read-only credentials from the vault; nothing is hardcoded in scripts. |
| Hermesagent runtime on our server | The scheduler that wakes the loop up. Each loop is a cron job under a Hermes profile; the planned bizops profile will host the business digests (IT loops run under vpsops). |
| Email renderer + gwsrender_email.py | All digests pass through one shared renderer: Huxberry-branded HTML, tables for repeated rows, a coral 'needs your response' box when the loop has questions, and an arrow link on every record. Sent from the loops mailbox via the Google Workspace CLI. |
| Model / brain | What it does here |
|---|---|
| None at run timedeterministic script | A normal cycle is a plain Python script — no AI tokens are spent unless a diagnosis or judgment step is actually needed. AI wrote the script; the script does the rounds. |
| GPT-5.5 via Codexthe bulk-work model | Wrote and maintains the mechanical parts — SQL, diffing, digest assembly. Effectively free on our existing subscription, so routine cycles cost almost nothing. |
Uploaded-audience registry: what was built, from which segment, approved by whom, uploaded when.
Per-batch review + confirmation reports.
Batch-gated, human-reviewed, business-contacts-only, PDPL-checked. The most safeguarded loop in the portfolio because it exports data — that's why it earns its place last.