AI/ML · May 1, 2026
iPiD Growth Intelligence Platform
Four connected AI workflows link market monitoring, account research, content production, and sales outreach to cited evidence and review history.
Project facts
For our Final Year Project, the team built a connected-agent GTM platform for iPiD's lean B2B fintech growth team. It centralises four workstreams: market intelligence, campaign production, account research, and sales outreach.
A research agent monitors regulation, fraud, competitors, and target accounts. It ranks weekly developments and returns cited findings with reusable context and review logs.
Once someone approves the research, a content agent can turn it into briefs, articles, social posts, and newsletters. The GTM workflow also covers account enrichment, CRM sync, personalised outreach, and lead nurturing.
GTM Engineering at heart
The project connects AI research with the systems a growth team needs to use that research. Source discovery, citations, review state, CRM data, and approved outputs stay linked as information moves between agents.
Human review gates research before content or outreach. That boundary keeps the team in control of what leaves the system.
Engineering challenges
Keeping claims grounded
Useful briefs combine many source types, but every synthesized claim needs a visible evidence trail. The workflow therefore treats citation and review state as part of a claim rather than as decoration added after generation.
for source in approved_sources:
evidence = discover_and_extract(source)
signals = classify_relevant_signals(evidence)
for claim in draft_brief(signals):
claim.citations = find_supporting_evidence(claim, signals)
claim.status = "cited" if claim.citations else "needs-review"
publish_only(review_and_approve(claims))This pseudocode is illustrative. It describes the engineering shape of the workflow without reproducing proprietary implementation details.
Managing freshness and uncertainty
Market and regulatory evidence changes over time. Evidence therefore needs timestamps, reason codes, and explicit review states so stale or weakly supported material cannot look equivalent to current, cited material.
if evidence.is_stale() or evidence.confidence < review_threshold:
claim.status = "needs-review"
claim.reason = explain_uncertainty(evidence)
else:
claim.status = "cited"Protecting sponsor data
The design applies access controls, data minimisation, review trails, and an explicit ban on autonomous external publishing. These constraints make human approval a system boundary rather than an optional step.
Outcome
The project shows how a growth team can reuse approved evidence across research, content, and outreach without losing its citations or review history.