How to Build a Marketplace CRM in DenchClaw

Learn how to build a two-sided marketplace CRM in DenchClaw to manage buyers, sellers, transactions, and relationship pipelines in one local-first system.

Mark Rachapoom
Mark Rachapoom
·8 min read
How to Build a Marketplace CRM in DenchClaw

Marketplaces have a relationship problem that standard CRMs don't solve. You have two sides — buyers and sellers (or service providers and clients, or creators and consumers) — and the CRM needs to track both, plus the transactions connecting them. Most CRM tools are built for one-sided funnels. You end up hacking a sales pipeline to handle something fundamentally different.

DenchClaw's flexible object system lets you model a two-sided marketplace properly. You define the objects, the fields, and the relations yourself — and the AI agent manages the data across all sides with natural language.

The Two-Sided Marketplace Data Model#

A marketplace CRM needs at minimum:

  • Buyers — the demand side (customers, clients, subscribers)
  • Sellers (or Providers) — the supply side (vendors, contractors, creators, service providers)
  • Listings — what sellers offer
  • Transactions — completed deals between buyers and sellers
  • Pipeline — deals in progress (buyer interested, pending match, proposal sent)

Beyond these core objects, you may also need: categories, reviews, payouts, disputes, campaigns.

Step 1: Create the Core Objects#

Tell the agent:

"Create these marketplace objects: buyers (demand side), sellers (supply side), listings (what sellers offer), transactions (completed deals), and pipeline_items (deals in progress)"

Buyers Object#

name: buyers
icon: users
fields:
  - name: Full Name
    type: text
  - name: Email
    type: email
  - name: Company
    type: text
  - name: Category Interest
    type: tags
  - name: Budget Range
    type: enum
    options: ["<$1k", "$1k-$5k", "$5k-$25k", "$25k-$100k", ">$100k"]
  - name: Buyer Status
    type: enum
    options: [Prospect, Active, VIP, Inactive, Churned]
  - name: Total Spent
    type: number
  - name: Transactions Count
    type: number
  - name: Last Transaction Date
    type: date
  - name: Acquisition Source
    type: text

Sellers Object#

name: sellers
icon: store
fields:
  - name: Business Name
    type: text
  - name: Contact Name
    type: text
  - name: Email
    type: email
  - name: Category
    type: tags
  - name: Seller Status
    type: enum
    options: [Applied, Onboarding, Active, Suspended, Churned]
  - name: Rating
    type: number
  - name: Total Transactions
    type: number
  - name: GMV Generated
    type: number  # Gross merchandise value
  - name: Commission Rate
    type: number
  - name: Onboarding Date
    type: date
  - name: Last Active Date
    type: date

Transactions Object#

name: transactions
icon: receipt
default_view: table
fields:
  - name: Transaction ID
    type: text
  - name: Buyer
    type: relation
    related_object: buyers
  - name: Seller
    type: relation
    related_object: sellers
  - name: Listing
    type: relation
    related_object: listings
  - name: Amount
    type: number
  - name: Marketplace Fee
    type: number
  - name: Seller Payout
    type: number
  - name: Status
    type: enum
    options: [Pending, Completed, Disputed, Refunded, Cancelled]
  - name: Transaction Date
    type: date
  - name: Category
    type: text

Step 2: Build the Seller Onboarding Pipeline#

Sellers are the supply side — and keeping the supply healthy is critical for marketplace liquidity. Create a pipeline for seller acquisition:

name: seller_pipeline
icon: package
default_view: kanban
view_settings:
  kanbanField: Seller Status
 
fields:
  - name: Business Name
    type: text
  - name: Contact
    type: relation
    related_object: sellers
  - name: Stage
    type: enum
    options: [Applied, Reviewing, Approved, Onboarding, Active, Rejected]
  - name: Application Date
    type: date
  - name: Category
    type: text
  - name: Estimated GMV Potential
    type: number
  - name: Onboarding Owner
    type: text

The kanban view shows your seller pipeline at a glance: Applied → Reviewing → Approved → Onboarding → Active.

Step 3: Build the Buyer Acquisition Pipeline#

The demand side also needs a pipeline — especially if buyers require onboarding, contracts, or qualification:

- name: Buyer Pipeline
  default_view: kanban
  view_settings:
    kanbanField: Buyer Status

For high-touch marketplaces (B2B, services, enterprise), track each potential buyer through: Prospect → Qualified → Demo Scheduled → Proposal Sent → Active.

Step 4: Match Tracking#

One of the unique workflow challenges in marketplaces is match facilitation — pairing buyers with the right sellers. Add a matches or pipeline_items object:

name: pipeline_items
icon: link
fields:
  - name: Buyer
    type: relation
    related_object: buyers
  - name: Seller
    type: relation
    related_object: sellers
  - name: Stage
    type: enum
    options: [Interest, Intro Sent, Meeting Scheduled, Proposal, Negotiating, Closed Won, Closed Lost]
  - name: Estimated Value
    type: number
  - name: Category
    type: text
  - name: Created Date
    type: date
  - name: Expected Close
    type: date
  - name: Match Score
    type: number
  - name: Notes
    type: richtext

This is your deal pipeline for the marketplace — each item represents a potential transaction being facilitated.

Talk to Sales

Tell us about your team and we'll show you how Dench fits your workflow.

By submitting this form you agree to be contacted by our team. See our Privacy Policy and Terms of Service.

Step 5: GMV and Revenue Analytics#

The key marketplace metric is GMV (Gross Merchandise Value). Build a dashboard:

"Build a Dench App showing: total GMV this month vs last month, active buyers vs sellers ratio, top 10 sellers by GMV, transaction volume by category (bar chart), and marketplace take rate trend"

-- GMV by month
SELECT 
  DATE_TRUNC('month', ef_date.value::date) as month,
  SUM(ef_amount.value::decimal) as gmv,
  SUM(ef_fee.value::decimal) as revenue
FROM entries e
JOIN entry_fields ef_date ON e.id = ef_date.entry_id
JOIN fields f_date ON ef_date.field_id = f_date.id AND f_date.name = 'Transaction Date'
JOIN entry_fields ef_amount ON e.id = ef_amount.entry_id
JOIN fields f_amount ON ef_amount.field_id = f_amount.id AND f_amount.name = 'Amount'
JOIN entry_fields ef_fee ON e.id = ef_fee.entry_id
JOIN fields f_fee ON ef_fee.field_id = f_fee.id AND f_fee.name = 'Marketplace Fee'
WHERE e.object_id = (SELECT id FROM objects WHERE name = 'transactions')
GROUP BY month
ORDER BY month;

Step 6: Supply and Demand Health Views#

Build views that surface supply-demand imbalances:

Undersupplied Categories#

Ask the agent: "Show me categories where buyer interest (tag count in buyers) exceeds active seller count by more than 3x"

Inactive Sellers (Supply Erosion Risk)#

- name: Inactive Sellers
  filters:
    - field: Last Active Date
      operator: less_than_days_ago
      value: 30
    - field: Seller Status
      operator: equals
      value: Active
  sort:
    - field: GMV Generated
      direction: desc

High-GMV sellers going inactive is a critical signal — reach out before they leave entirely.

VIP Buyers (Retention Priority)#

- name: VIP Buyers
  filters:
    - field: Total Spent
      operator: greater_than
      value: 10000
    - field: Buyer Status
      operator: not_equals
      value: Inactive
  sort:
    - field: Total Spent
      direction: desc

Step 7: Automate Marketplace Alerts#

"Every morning, message me on Telegram:

  • New seller applications received in the last 24 hours
  • Buyers who completed their first transaction (within the last 24 hours) — these need a welcome check-in
  • Sellers who went inactive (no transaction in 30 days) — flag if their GMV was >$1k historically
  • Any disputes opened in the last 48 hours"

The agent becomes your marketplace operations radar.

Marketplace-Specific CRM Tips#

Track relationship age: Long-term sellers and buyers have higher LTV and lower churn. Add "First Transaction Date" to both objects and segment by cohort.

Commission rate management: If sellers have individual rates (negotiated deals), the Commission Rate field on sellers + the Marketplace Fee on transactions lets you track take rate by seller.

Two-sided NPS: Send NPS surveys to both buyers and sellers periodically. Store results in their objects. Buyer NPS and seller NPS tell very different stories about marketplace health.

Dispute tracking: Create a disputes object linked to transactions. Track resolution time and outcomes. High dispute rates on specific sellers are an early warning for supply quality problems.

Frequently Asked Questions#

Can DenchClaw handle both B2C and B2B marketplace models?#

Yes. The object system is flexible — a B2C marketplace might have individual buyers (person object) and small businesses as sellers, while a B2B marketplace might have enterprise buyers (company object) and vetted vendors. Model it the way your business works.

How do I handle multiple listings per seller?#

The listings object is linked to sellers via a relation field. One seller can have many listings. When tracking a transaction, link it to both the seller and the specific listing used.

Can I track payouts to sellers in DenchClaw?#

Add a payouts object with fields for payout amount, date, status, and a relation to sellers. When a batch of transactions is finalized, create a payout record and update seller balances. For actual payment processing, you'd use Stripe Connect — DenchClaw tracks the relationships and history.

How do I handle categories with very different transaction sizes?#

Use the Category tag on transactions and create separate views/analytics per category. A services marketplace might have $500 micro-transactions and $50,000 enterprise contracts in the same system — segmenting by category keeps the analytics meaningful.

What's the best view type for a marketplace dashboard?#

The combination that works best: kanban for pipeline stages, table for transaction history with sorting/filtering, and a custom Dench App dashboard for GMV metrics and supply-demand health visualization.

Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →

Related articles

Keep reading

View all