B2BPaper: Service as Software — Strategic Plan
The Pivot
From: Online marketplace where mills list surplus and buyers browse
To: AI paper broker that sources, matches, and closes deals autonomously
Revenue model: 2-4% commission per deal (replacing human brokers at 3-8%)
Target: 50-100 deals/month at €100k avg deal = €150k-400k/month revenue
How It Works
For Buyers
- Buyer submits request: "40t uncoated woodfree, 80gsm, reels, Central Europe, 3 weeks"
- AI agent searches supply database + live scrapes marketplaces
- Agent presents 2-3 matching offers with pricing
- Buyer picks one, agent handles negotiation and paperwork
- Deal closes, B2BPaper takes commission
For Mills
- Mill tells Thierry or submits form: "60t off-spec coated going obsolete in 30 days"
- AI agent scans demand profiles, finds matching buyers
- Agent drafts and sends offers to qualified buyers
- First buyer to commit gets the deal
- B2BPaper takes commission from mill side
Thierry's Role
- Relationship anchor for high-value deals (€50k+)
- Mill network opener (gets surplus lists from his contacts)
- Industry knowledge validator (is this price realistic? is this grade legit?)
- Closes 20% of deals that need human trust; AI handles the rest
Technical Architecture
┌─────────────────────────────────────────────────────────┐
│ B2BPaper SaaS │
├──────────────┬──────────────┬───────────────────────────┤
│ Supply Side │ Demand Side │ Matching Engine │
│ │ │ │
│ • Scrapers │ • Intake │ • Grade matching │
│ • Mill API │ • Outbound │ • GSM/format/volume │
│ • Manual │ • CRM │ • Geography/logistics │
│ │ │ • Price optimization │
├──────────────┴──────────────┴───────────────────────────┤
│ Deal Pipeline │
│ Lead → Qualified → Offered → Negotiating → Closed │
├─────────────────────────────────────────────────────────┤
│ Communication Layer │
│ Email / WhatsApp / Agent Outreach │
├─────────────────────────────────────────────────────────┤
│ Django REST API (existing codebase) │
│ PostgreSQL (existing DB + new tables) │
└─────────────────────────────────────────────────────────┘
Built on top of existing marketplace codebase: /home/claude/customers/marketplace
Existing assets: Product models, mill data, Extractor pipeline (8,919 docs, 4,246 products, 440 mills)
Phases & Tickets
Phase 0: Foundation (5 days)
| Ticket |
Title |
Estimate |
| B2B-S01 |
Supply record model + Django app + API |
1d |
| B2B-S02 |
Demand profile model + Django app + API |
1d |
| B2B-S03 |
Deal pipeline model + state machine + API |
1d |
| B2B-S04 |
Match record model + scoring schema + API |
1d |
| B2B-S05 |
Admin dashboard shell (Angular) |
1d |
Phase 1: Supply Scraping (8 days)
| Ticket |
Title |
Estimate |
| B2B-S06 |
Crawlee scraper framework + base classes |
1d |
| B2B-S07 |
PaperIndex.com scraper |
1d |
| B2B-S08 |
Papnews.com surplus scraper |
1d |
| B2B-S09 |
PaperX / Papermart scraper |
1d |
| B2B-S10 |
Generic mill website scraper (configurable) |
1d |
| B2B-S11 |
Supply deduplication + normalization engine |
1d |
| B2B-S12 |
Scraper scheduler (PM2 cron, daily runs) |
1d |
| B2B-S13 |
Supply inventory dashboard (Angular admin) |
1d |
Phase 2: Demand Collection (5 days)
| Ticket |
Title |
Estimate |
| B2B-S14 |
Public intake form (buyer request page) |
1d |
| B2B-S15 |
Buyer profile management + CRM fields |
1d |
| B2B-S16 |
Outbound email templates + Mailgun sender |
1d |
| B2B-S17 |
Demand tracking dashboard (Angular admin) |
1d |
| B2B-S18 |
Buyer qualification scoring |
1d |
Phase 3: Matching Engine (5 days)
| Ticket |
Title |
Estimate |
| B2B-S19 |
Matching algorithm (grade, GSM, format, volume, geo, price) |
2d |
| B2B-S20 |
Match scoring + ranking system |
1d |
| B2B-S21 |
Auto-match trigger on new supply or demand |
1d |
| B2B-S22 |
Match review dashboard (Angular admin) |
1d |
Phase 4: Communication Layer (5 days)
| Ticket |
Title |
Estimate |
| B2B-S23 |
Email integration (offer, follow-up, negotiation templates) |
1d |
| B2B-S24 |
WhatsApp Business API integration |
2d |
| B2B-S25 |
Conversation tracking + timeline per deal |
1d |
| B2B-S26 |
Auto-follow-up scheduler |
1d |
Phase 5: Deal Management (5 days)
| Ticket |
Title |
Estimate |
| B2B-S27 |
Deal pipeline view (kanban board) |
1d |
| B2B-S28 |
Contract template generation (PDF) |
1d |
| B2B-S29 |
Commission calculator + invoice generator |
1d |
| B2B-S30 |
Deal analytics dashboard |
1d |
| B2B-S31 |
Revenue forecasting widget |
1d |
Phase 6: Service Landing Pages (3 days)
| Ticket |
Title |
Estimate |
| B2B-S32 |
Buyer-facing landing page ("We source paper for you") |
1d |
| B2B-S33 |
Mill-facing landing page ("We move your surplus") |
1d |
| B2B-S34 |
SEO + meta tags + structured data |
1d |
Phase 7: AI Agent Layer (5 days)
| Ticket |
Title |
Estimate |
| B2B-S35 |
Buyer qualification agent (auto-qualify inbound) |
1d |
| B2B-S36 |
Supply matching agent (auto-match on trigger) |
1d |
| B2B-S37 |
Outreach drafting agent (personalized offers) |
1d |
| B2B-S38 |
Deal assistant agent (negotiation support) |
1d |
| B2B-S39 |
Daily digest agent (Thierry morning briefing) |
1d |
Phase 8: Testing & Hardening (3 days)
| Ticket |
Title |
Estimate |
| B2B-S40 |
End-to-end flow test (supply → match → offer → close) |
1d |
| B2B-S41 |
Load testing + scraper rate limiting |
1d |
| B2B-S42 |
Error handling + retry logic + monitoring |
1d |
Total: 42 tickets, ~44 working days, 9 weeks
Go-to-Market (After Build)
- Thierry calls 10 mills he knows, gets surplus lists → manual supply entry
- Outbound to 500 converters/printers → build demand profiles
- First 10 deals manually assisted by Thierry + AI
- After 20 deals, let agents run 80% autonomously
- Scale scraping to cover all major paper marketplaces
- Revenue target: €50k/month by month 3, €150k by month 6