Creator Labs/Work/DealFlow · Debtworks
Case study · Debtworks · Capital advisory

Your outreach motion,
run by agents.

DealFlow is an autonomous business-development engine we built for Debtworks, a capital-advisory firm. The team describes its buyer in plain English; that compiles into the playbook a fleet of agents run — sourcing, scoring, drafting, classifying replies, and moving the pipeline. A human approves the moments that matter. The machine does the rest.

Client
Debtworks — capital & debt advisory
Engagement
Full product, built end to end
Surface
Wizard · Inbox · Pipeline · Dashboard
Status
In production
The before state

Boutique advisory runs on relationships. Outbound runs on hours nobody has.

Debtworks places debt for real companies. The team's edge is judgement — who to call, what to say, when a deal is worth chasing. But the motion that feeds it was manual: build a list, research each name, write the email, triage every reply, remember to follow up. The expertise was the bottleneck and the busywork at the same time.

6h
Per lead,
researched by hand
11d
Term sheet to
first draft
38
Facilities closed
on the old motion
₹240Cr
Debt raised
to date

Debtworks' real operating record — the domain reality DealFlow was built to scale, not replace.

What we built

One loop, run end to end.

Every stage of the sales motion — signal to outcome — captured on one surface, so the system learns what actually converts for this firm, in this market.

01 · Signal

Source & score

Apollo, CSV, and Tracxn imports deduped into a company graph, each contact scored against the firm's ICP by Claude.

02 · Outreach

Draft in voice

Sequences drafted in the firm's tone from the rules document, sent on a warmed, isolated domain under daily caps.

03 · Reply

Classify ≤5 min

Every reply classified into seven classes with confidence; a response drafted and queued for one-click human approval.

04 · Meeting

Book the call

Approved drafts propose real calendar slots; the deal moves to Meeting booked the moment a time is taken.

05 · Outcome

Log & learn

Outcomes write to an immutable event log — the substrate that tells the firm which signals and angles actually close.

SIGNAL OUTREACH REPLY MEETING OUTCOME   every outcome sharpens the next campaign

The configuration language

Plain English in. A running playbook out.

No filter builders, no settings sprawl. The team writes who they sell to the way they'd brief a new analyst. Claude parses it into a structured, versioned rules document — echoed back for confirmation — that drives sourcing, scoring, drafting, and every stage transition downstream.

What the team writes
"Founders and CFOs at Series A–C companies in India raising ₹20–150 Cr of debt. Worth a call the moment they close an equity round or post a finance hire."
What the agents run
ICP      finance leaders · Series A–C · India
SIGNALS  EQUITY_ROUND_NEW      w 1.0
         FINANCE_HIRE          w 0.8
STAGES   New → Contacted → Replied
         → Qualified → Meeting → Outcome
RULES    REPLY=INTERESTED → QUALIFIED
         pinned · rules v3 · confirmed
Under the hood

Autonomous where it's safe. Gated where it counts.

The product owns the entire critical path — domains, DNS, sending, sourcing, classification, pipeline — so the firm does zero infrastructure work and approves only the decisions that are genuinely theirs to make.

Zero-touch provisioning

Dedicated domain, DNS (SPF/DKIM/DMARC), SMTP and warm-up provisioned automatically. One bad campaign can never tank another tenant's reputation.

Rules-driven scoring

Every contact fit-scored 0–100 against the raw rules, with a one-line reason in the firm's own voice. Above threshold ships; borderline asks for a human eye.

Seven-class reply triage

Interested, objection, not-now, referral, unsubscribe, out-of-office, noise — each with confidence. Low confidence routes to a human; nothing is silently deleted.

Approve, with a 10s undo

Drafts wait for a click before sending under the firm's name. Edit distance is stored as training signal; a 10-second undo backs out any send.

Plain-English copilot

"Add the founders at companies over 200 people" — typed in plain English, parsed, previewed against real data, and enrolled into the pipeline on confirm.

Tenant isolation by design

Postgres row-level security on every table; the app role can't bypass it. No query ever reads tenant from a request — only from a signed token.

How it's built

Senior engineering, top to bottom.

Backend & AI

Runtime
Pure Jakarta Servlets on Tomcat 10.1, Java 17 — no Spring container, deliberately lean
AI
Spring AI as a standalone library → Anthropic Claude, structured outputs to typed records
Data
PostgreSQL with row-level security; raw JDBC + HikariCP; an immutable event log as the intelligence substrate
Jobs
JobRunr (Postgres-backed) for sequencing, throttling and warm-up ramps

Frontend & infra

SPA
Vite + React + TypeScript, shadcn/ui — a dark-first "Conservatory" design system, butter on deep pine
Integrations
Cloudflare · Namecheap · Apollo · Nylas · Resend, each behind a swappable interface
Deploy
Azure / AWS, WAR + static SPA, JSON-structured observability with request-id tracing
Confidence
An end-to-end journey suite asserting the audit log at every hop of every causal chain
Java 17Tomcat 10.1Spring AIClaudePostgreSQL + RLSJobRunrReact + TSshadcn/uiApolloNylasCloudflare
What shipped

Live, measured, and fast.

Not a prototype. Real data, real performance, verified in production.

165+
Companies and 169 contacts imported, deduped and normalized into the pipeline from a single connector run.
Verified live
80×
Faster pipeline board — a 169-deal view cut from ~16s to ~200ms by killing N+1 hydration.
Measured
≤5min
From reply received to classified and drafted in the inbox — the product's response-time target, held.
Design target
0
Cross-tenant reads. Row-level security isolation verified by test: a foreign tenant sees nothing.
Verified live
7
Reply classes the inbound classifier resolves, calibrated and grounded against the firm's real threads.
In production
1
Bill, one surface, one playbook. The firm touches zero DNS records and runs no infrastructure.
By design

Operating history (₹240 Cr debt raised · 38 facilities closed · 6 hours per lead · 11 days term-sheet-to-draft) reflects Debtworks' actual record and pre-platform baseline. System figures (import volumes, the 16s→200ms board optimization, the ≤5-minute classification target, RLS isolation) are measured against the deployed build. Outbound performance figures are not claimed here; the engagement is in production and accruing its own results. Full detail under NDA.

The shape of the work

We didn't sell Debtworks a tool to learn. We built the motion, wired it to their real data, and handed back a system that runs the outbound and gets sharper every week — code they own, no platform lock-in.

Have a motion to automate?

We build the engine. You run the deals.

If there's a repeatable, expertise-heavy motion eating your team's hours, tell us about it. We'll come back with scope, timeline, and price — or an honest "not a fit."