Welpenherz Documentation
Complete product, technical, and business documentation

Welpenherz β€” The Company

Corporate structure, SKG strategy, and the vision behind the platform.

Company Overview
🏢 What is Welpenherz?
Welpenherz is the parent company behind Welpenmatch, a Swiss-first dog breeder marketplace. The mission is to connect responsible breeders with puppy buyers through trust, transparency, and compliance. German is the primary language, CHF the currency, and Swiss cantonal law is deeply integrated.
🇨🇭 Swiss-First Strategy
The platform is explicitly Swiss-first: 26 cantons modeled with regulations, Swiss contact/data formatting, Europe/Zurich timezone, CHF pricing, and compliance-aware breeder workflows. Language support includes German (primary), French, Italian, and English.
SKG Opportunity
🤝 SKG Partnership Strategy
The go-to-market wedge is explicit:
  • Build club admin software as the entry point
  • Win one Rasseklub as proof of concept
  • Expand toward SKG partnership
  • Unlock breeder supply and marketplace liquidity
🏛 Value to SKG
  • Replaces fragmented paper/email/Excel workflows
  • Makes compliance visible and enforceable
  • Uses existing breed regulations as operational engine
  • Creates scalable club-network layer
  • Improves trust and provenance for breeders
Rasseklub / Club Admin Tooling
👥 Club Admin App
Hosted at clubs.welpenmatch.ch, this app digitizes club operations:
  • Member directory and invitations
  • Breeder oversight and role assignment
  • Litter registration oversight
  • Reports and statistics
  • 112 SKG clubs already seeded in database
🔍 Zuchtwart App
Hosted at zuchtwart.welpenmatch.ch β€” the hero product for breed wardens:
  • Health-test verification queue
  • Litter-registration review queue
  • Whelping-report review queue
  • Breeder compliance overview
  • Breed-wide eligibility matrix
  • Decision history and audit trail
🔄 Club Data Model
New database tables for the club layer:
  • club_users β€” independent club identity
  • club_memberships β€” roles: admin, zuchtwart, member
  • club_breeders β€” bridge to welpenmatch_profile_id
  • club_dogs β€” club-registered breeding dogs
  • health_tests β€” per-dog, with certificate tracking
  • litter_registrations β€” compliance-check pipeline
  • whelping_reports β€” post-birth reporting + SKG reference
Corporate Structure
📊 Platform Architecture
SurfaceDomainPurpose
Marketplacewelpenmatch.chPublic marketplace for buyers and breeders
Breeder Portalwelpenmatch.ch/portalFull breeder operating system (19 sub-routes)
Breeder Sites{slug}.welpenmatch.chPremium breeder mini-websites with inline editing
Club Adminclubs.welpenmatch.chBreed club administration
Zuchtwartzuchtwart.welpenmatch.chBreed warden compliance tools
Investor Pitch Deck
🎯 Investor Pitch Deck

Interactive presentation covering the Welpenherz ecosystem, regulatory waterfall, and anti-puppy-trade strategy. Features clickable stakeholder diagram with 3 views.

108
Clubs
26
Cantons
12
Stakeholder Nodes
3
Interactive Views
Open Full Pitch Deck

Welpenmatch β€” The Product

Features, subscription tiers, trust system, and the full product scope.

Core Roles
👤 Buyer (Kaeufer)
  • Browse/search puppies, litters, breeders, dogs
  • Create lifestyle/preference profile
  • Get AI breed and puppy recommendations
  • Send breeder inquiries, join waitlists
  • Favorite breeders/litters/puppies/dogs
  • 8-step onboarding: welcome, profile, lifestyle, quiz, preferences, contact, review, finish
🏡 Breeder (Zuechter)
  • Everything buyers can do, plus:
  • Manage public breeder profile
  • Manage dogs, puppies, and litters
  • Manage inquiries, waitlists, reservations
  • AI-assisted bios, replies, communications
  • Blog posts, document vault, pedigree management
  • 9-step onboarding with autosave and validation
🛡 Admin
  • Everything breeders can do, plus:
  • Manage users and content platform-wide
  • Verify breeders and moderate reviews
  • Inspect platform statistics
  • RLS/debugging tools
Subscription Tiers
FREE Standard Breeder
  • Existing 8-tab breeder profile
  • Hardcoded layout from breeder profile data
  • All core marketplace features
PREMIUM SupaZuechter
  • Full website builder with templates and sections
  • AI content prefill and per-section regeneration
  • Media manager and custom pages
  • Wildcard subdomain: {slug}.welpenmatch.ch
  • Optional custom domain
  • 6 themes: classic, modern, warm, elegant, natural, minimal
  • 10 page templates across 8 page types
Trust System
🏅 Trust Badges
BadgeCondition
skg_verifiedverification_status = verified OR skg_member = true
premiumsubscription_tier = premium
secure_paymentpayments_enabled = true (Stripe Connect active)
rehoming_guaranteedAlways granted β€” platform-wide guarantee
⚠ Moderation: Strike System
StrikeAction
1st (0 prior)Warning
2nd (1 prior)30-day suspension
3rd+ (2+ prior)Permanent ban (suspended_until = 2099)
AI Features
🤖 Buyer AI
  • Breed matching: top breed recommendations with match scores
  • Puppy matching: top puppy matches from buyer profile
  • Lifestyle assessment chatbot: 3-4 conversational questions
🤖 Breeder AI
  • Bio writer: generates warm, professional German bios
  • Profile chat: answers only from breeder-provided data
  • Inquiry response generator with confidence scores
  • Breed translation: English to German content
  • Site builder AI prefill (5/day) and per-section regenerate (20/day)
Key Feature Areas
🔎 Search and Discovery
  • Search puppies, breeders, litters, breeding dogs
  • Algolia-powered with denormalized breeder info in puppy index
  • Facets: availability, breed, price, location, canton
  • Predictive breed suggestions and real-time results
💬 Communication System
  • Inquiry lifecycle: open, weitere_angaben, warteliste, abgelehnt, reserviert, abgeschlossen
  • Real-time Supabase chat with text/image/document messages
  • AI auto-response when confidence > 0.7
  • Compatibility scoring (0-1), waitlist ranking
📚 Hundewelt Education Hub
  • Hunde A-Z breed profiles
  • Canton-specific information for all 26 cantons
  • Glossary, FAQ, purchase guidance, starter kit
  • Laws/rules, breeder guidance, legal knowledge
🛒 Breeder Site Builder
  • Registry-based section/template architecture
  • 8 section types: hero, intro, rich-text, puppies grid, contact form, reviews, contact info, map
  • Inline editing: InlineText, InlineRichText, InlineImage, InlineVideo
  • Auto-save (2s debounce), publish/unpublish, AI regenerate
  • Dual rendering: embedded in marketplace + standalone on subdomain

Codebase

Tech stack, architecture decisions, routes, database, and APIs.

Tech Stack
🔧 Core Technology
LayerTechnologyNotes
FrameworkNext.js 15 + React 19App Router, Server Components by default
LanguageTypeScript (strict)No any, no ignored build errors, Zod as source of truth
DatabaseSupabase (PostgreSQL)RLS, repository pattern, soft deletes
StylingTailwind CSS + Shadcn/uiRadix primitives, Alegreya + Belleza fonts
AIGoogle Genkit + Gemini 2.0 FlashGerman prompts, structured output
SearchAlgoliaFaceted search, real-time suggestions
PaymentsStripe (Connect + Subscriptions)Destination charges, CHF, card + TWINT
EmailResend + React Email12 templates, 4 languages (de/fr/it/en)
HostingVercelSSR for SEO, preview deploys
Architecture Decisions (Locked)
🔒 Non-Negotiable Conventions
  • Server Components by default, Server Actions for mutations
  • Repository pattern for all data access
  • Zod as source of truth for validation and types
  • No any types, no ignored build errors, no console.log
  • Feature-based directory structure
  • Route-level error boundaries
  • Env-gated logging only
  • Business-logic tests required
  • Husky pre-commit: typecheck + lint
Database Overview
22
Tables
3
RLS Tables
13
JSONB Fields
2
Views
🗄 Core Tables
TablePurposeKey Fields
usersMaster user record (breeder/buyer/admin)auth_uid, email, user_type
breeder_profilesExtended breeder public profileslug, verification_status, onboarding_step
buyer_profilesBuyer lifestyle/preferenceshousing_type, dog_experience_level, max_price
dogsBreeding dogsbreed_id, breeding_status, health_tests (JSONB)
littersLitter lifecyclestatus (planned/pregnant/born/ready/closed)
puppiesIndividual puppy listingsstatus (available/reserved/sold/keeping), price CHF
applicationsBuyer applications for puppies/litters/rehomingapplication_type, status, questionnaire_answers
chat_rooms / messagesDirect messaging with attachmentscontext_type (general/application/puppy_inquiry)
dog_breedsBreed catalog with 30+ characteristicssize_category, energy_level, trainability (1-5 scales)
reviewsBuyer reviews of breedersoverall_rating, communication_rating, puppy_health_rating
waitlistsPer-litter queuestatus (active/offered/accepted/declined/expired)

View full schema explorer →

Portal Routes (Breeder)
🗺 Breeder Portal β€” 19 Routes
RoutePurpose
/portal/uebersichtDashboard with stats, activity feed, compliance progress
/portal/profilPublic breeder profile editor + preview, QR code, subdomain
/portal/einstellungenAccount, notifications, privacy, language, FAQ, waitlist settings
/portal/einrichtungNew breeder setup wizard
/portal/meine-zuchtBreeds, clubs, regulations, health requirements
/portal/hundeBreeding dog management
/portal/wurfplanungLitter management, puppy workflows, heat tracking, stud search
/portal/wartelisteWaitlist and application prioritization
/portal/nachrichtenFull-height messaging hub
/portal/seitenBreeder website builder and page management
/portal/blogBlog content management
/portal/dokumenteDocument vault (PDF/JPG/PNG/WebP, max 10MB)
/portal/aboSubscription management and pricing
/portal/rasseclubClub directory and upcoming events
/portal/shopCurated breeder shop / affiliate products
/portal/stammbaumPedigree tree management (3 generations)
/portal/zahlungenStripe Connect onboarding and status
/portal/zahlungen/auszahlungenPayouts dashboard

View full page map →

API Routes β€” All 46 (grouped)
46
Total Routes
10
Stripe Routes
12
Breeder Site Routes
4
Club Routes
3
Cron Jobs
💳 Stripe β€” Payments (2)
  • POST /api/stripe/payments/create-deposit β€” Creates reservation deposit
  • POST /api/stripe/payments/create-final β€” Creates final balance payment
💳 Stripe β€” Connect (5)
  • POST /api/stripe/connect/create-account β€” Onboard breeder
  • GET /api/stripe/connect/return β€” OAuth return handler
  • GET /api/stripe/connect/refresh β€” Refresh onboarding link
  • GET /api/stripe/connect/balance β€” Fetch breeder balance
  • GET /api/stripe/connect/payouts β€” Payout history
⭐ Stripe β€” Subscriptions + Webhook (3)
  • POST /api/stripe/subscriptions/create-checkout β€” Premium checkout
  • POST /api/stripe/subscriptions/portal β€” Billing portal
  • POST /api/webhooks/stripe β€” Stripe events webhook
🏡 Breeder Site β€” Public Data (6)
  • GET /api/breeder-site/[id]/profile β€” Public profile
  • GET /api/breeder-site/[id]/dogs β€” Dogs
  • GET /api/breeder-site/[id]/litters β€” Litters
  • GET /api/breeder-site/[id]/puppies β€” Puppies
  • GET /api/breeder-site/[id]/blog β€” Blog
  • GET /api/breeder-site/[id]/reviews β€” Reviews
🛒 Breeder Site β€” Builder (6)
  • GET/POST /api/breeder-site/config β€” Site config
  • GET/POST /api/breeder-site/pages β€” Pages CRUD
  • PATCH /api/breeder-site/pages/[id] β€” Save page
  • POST /api/breeder-site/pages/[id]/publish β€” Publish
  • POST /api/breeder-site/ai/prefill β€” AI prefill
  • POST /api/breeder-site/ai/regenerate β€” AI regen
🖼 Site β€” Media + Leads (3)
  • POST /api/breeder-site/media β€” Upload media
  • DELETE /api/breeder-site/media/[id] β€” Delete media
  • POST /api/breeder-site/anonymous-lead β€” Anonymous lead
🏛 Club Admin (4)
  • POST /api/clubs/auth β€” Club login
  • GET/POST /api/clubs/members β€” Members
  • PATCH /api/clubs/members/[id] β€” Update member
  • POST /api/clubs/invite/accept β€” Accept invite
⏰ Cron + Notifications (5)
  • GET /api/cron/review-reminders β€” Daily review reminders
  • GET /api/cron/newsletter β€” Weekly newsletter
  • GET /api/cron/daily-digest β€” Daily digest
  • POST /api/breed-notifications/trigger β€” Breed alerts
  • POST /api/webhooks/user-created β€” User created hook
🔧 Platform Utilities (7)
  • POST /api/images/upload β€” Image optimization upload
  • GET /api/search β€” Search proxy
  • POST /api/emails/send β€” Email send
  • GET /api/emails/unsubscribe β€” Unsubscribe
  • POST /api/auth/setup-breeder β€” Setup breeder
  • POST /api/reports β€” Content reports
  • POST /api/consent/record β€” Consent logging
Supabase Edge Functions (8)
⚡ Edge Functions β€” Event-Driven Layer

Edge functions are thin dispatchers β€” they handle Supabase real-time triggers and route to the Next.js API for rendering/sending.

FunctionTriggerPurpose
handle-inquiryDB insert: inquiriesNew inquiry processing + breeder notification
notify-new-messageDB insert: messagesNew message email + Telegram notification
toggle-favoriteHTTP POSTToggle favorites (4 entity types)
get-favoritesHTTP GETFetch user's favorites
get-activityHTTP GETBreeder activity feed
track-viewHTTP POSTView analytics tracking
track-interactionHTTP POSTInteraction event tracking
telegram-webhookHTTP POST: TelegramInternal voice/task ops bot
Email System β€” 12 Templates
✉ React Email Templates β€” Status

Provider: Resend. Sender: WelpenMatch <noreply@welpenmatch.ch>. 4 languages (de/fr/it/en). Batch: 50 per batch, 500ms delay.

TemplateTypeStatusTriggerRecipients
welcomeTransactionalLiveuser-created webhookNew buyer / breeder
email_verificationTransactionalScaffoldedAuth flow (TBD)Registering user
new_inquiryTransactionalLiveInquiryRepository.create()Breeder
new_messageTransactionalLivenotify-new-message edge fnMessage recipient
inquiry_status_changeTransactionalLiveupdateStatus()Buyer
reservation_confirmationTransactionalLiveAfter reservationBuyer + Breeder
auto_rejectionTransactionalLiveAuto-reject rulesBuyer
litter_assignmentTransactionalLiveLitter waitlist addBuyer
new_litter_announcementMarketingLiveBreed subscription triggerBreed subscribers
blog_newsletter_digestMarketingLiveWeekly cronNewsletter subscribers
review_reminderMarketingLiveDaily cron (14d post-pickup)Buyer
post_purchase_welcomeTransactionalOrphanedNot wiredBuyer (intended)

Marketing emails include unsubscribe links. post_purchase_welcome exists but has no trigger yet.

External Services

Third-party integrations and how they connect to the platform.

💾 Supabase
  • PostgreSQL database with Row Level Security
  • Auth (email/password + Google OAuth)
  • Realtime for chat messages
  • Storage for images, documents, media
  • Image transformations (replacing Vercel optimizer)
  • Edge functions for event triggers
  • Generated TypeScript types from schema
💳 Stripe
  • Stripe Connect (Standard) for breeder payouts
  • Destination charges: platform fee + transfer to breeder
  • Two-stage payments: reservation deposit + final payment
  • Subscriptions via Checkout Sessions
  • Billing portal for payment management
  • Webhook handling with idempotency
  • Payment methods: card + TWINT
  • API version pinned to 2026-03-25.dahlia
✉ Resend
  • Transactional and marketing email delivery
  • Sender: WelpenMatch <noreply@welpenmatch.ch>
  • 12 React Email templates (11 active, 1 orphaned)
  • 4 languages: de, fr, it, en
  • Batch sending: 50 per batch, 500ms delay
  • Unsubscribe support for 3 marketing email types
🤖 Anthropic / Google AI
  • Google Genkit + Gemini 2.0 Flash for core AI
  • All prompts are in German
  • Breed matching, puppy matching, lifestyle chatbot
  • Breeder bio writer, inquiry response generator
  • Site builder AI prefill and per-section regenerate
  • Auto-response triggers only when confidence > 0.7
📱 Telegram
  • Parallel notification channel for breeders
  • New inquiry alerts
  • New message notifications
  • Litter announcement notifications
  • Voice task capture for internal ops
▲ Vercel
  • Production hosting with SSR
  • Preview deploys for every PR
  • CI/CD pipeline
  • Custom domain routing via rewrites
  • Image optimization being moved to Supabase
🔍 Algolia
  • Puppy search index with denormalized breeder data
  • Searchable: name, breed, description
  • Facets: availability, breed, price
  • Real-time suggestions and pagination

Flows

User journeys, payment flows, onboarding processes, and trust computation.

Buyer Journey
👤 Buyer: Sign Up to Purchase
1
Sign up with email/password (min 8 chars, upper/lower/digit) or Google OAuth
2
Complete 8-step onboarding: welcome, profile, lifestyle, personality quiz, pet preferences, contact preferences, review, finish
3
Get AI breed recommendations with match scores based on lifestyle profile
4
Search/filter puppies by breed, gender, size, price (CHF), age, location, canton
5
Send inquiry to breeder β€” system calculates compatibility score (0-1)
6
Chat in real-time, receive AI-assisted responses if breeder has it enabled
7
Get reservation confirmation with confirmation number, pay deposit via Stripe
8
Pay final balance, receive post-purchase emails, leave review after 14 days
Breeder Journey
🏡 Breeder: Setup to Selling
1
Sign up with kennel name, email, password (min 6 chars), plan selection
2
Complete 9-step onboarding: basic info, about, specializations, credentials, contact, media, dogs, completion/consents
3
Autosave every 5s with 1s debounce, progress tracking, save retry with exponential backoff
4
Set up Stripe Connect (Standard) for payment acceptance β€” onboarding/charges/payout flags tracked
5
Add breeding dogs, create litters (planned > pregnant > born > ready > closed), manage puppies
6
Receive inquiries, manage waitlist, process reservations with deposit + final payment
Payment Flow
💰 Two-Stage Payment Process
1
Breeder sets price and deposit amount for puppy/litter reservation
2
Deposit payment: buyer pays breeder amount + 5% platform fee + Stripe fee (~2.9% + 30 Rp)
3
Final payment: buyer pays remaining balance (agreed_total - deposit) with same fee structure
4
Breeder receives 100% of listed price via Stripe Connect destination charge
📊 Fee Example: CHF 3,000 Puppy
ComponentAmount
Breeder priceCHF 3,000
Platform fee (5%)CHF 150
Stripe fee (~2.9% + 30 Rp)CHF 95
Buyer totalCHF 3,245
Breeder payoutCHF 3,000
Email Notification Flow
✉ Transactional Emails (8)
  • welcome β€” on user creation
  • email_verification β€” account verification
  • new_inquiry β€” to breeder when buyer inquires
  • new_message β€” new chat message notification
  • inquiry_status_change β€” to buyer when status changes
  • reservation_confirmation β€” to both buyer and breeder
  • auto_rejection β€” to buyer on automated rejection
  • litter_assignment β€” to buyer when assigned to waitlist
📢 Marketing Emails (3)
  • blog_newsletter_digest β€” weekly cron, batches of 50
  • new_litter_announcement β€” breed-subscription triggered
  • review_reminder β€” daily cron, 14 days after pickup

All marketing emails include unsubscribe links via email_subscriptions table.

Cantonal Compliance Flow
🇨🇭 Canton Sellability Check
1
Input: breed_id, canton_code, optional blood_percentage for mixed breeds
2
Check cantonal_breed_regulations + cantonal_legal_status_types + breed_category_assignments
3
DB function can_sell_breed_in_canton() returns: allowed, requires_permit, banned, or banned_new
4
Views v_banned_breeds_by_canton and v_breed_status_by_canton provide aggregated status
📋 Cantonal Data Tracked
  • Breed restrictions: 7 legal statuses (banned to allowed)
  • Blood-percentage thresholds for mixed breeds
  • Training requirements: theory, practical, exams, deadlines
  • General regulations: insurance, registration, tax, leash laws
  • Restricted areas: seasonal, time-based, with fine amounts
  • All 26 cantons in schema, Zurich fully seeded
⚖ Legal Status Types
  • banned β€” Fully prohibited
  • banned_new β€” No new acquisitions
  • restricted_permit β€” Permit required
  • restricted_muzzle β€” Muzzle obligation
  • restricted_leash β€” Leash obligation
  • monitored β€” Under observation
  • allowed β€” No restrictions
Trust Badge Computation
🏅 computeTrustSignals(profile)
1
Input: verification_status, skg_member, subscription_tier, payments_enabled
2
If verified OR skg_member: award skg_verified badge
3
If subscription_tier = premium: award premium badge
4
If payments_enabled = true: award secure_payment badge
5
Always award rehoming_guaranteed badge (platform-wide guarantee)
Subscription Flow
⭐ Premium Upgrade
1
Breeder clicks upgrade in /portal/abo
2
Server creates Stripe customer (if needed) and Checkout Session for STRIPE_PREMIUM_PRICE_ID
3
Buyer completes Stripe-hosted checkout, webhook updates subscriptions table
4
Premium site auto-created from breeder profile data with 7 default pages
5
Breeder lands in inline editor, wildcard subdomain active
Litter Registration Pipeline (Club)
📝 Club Litter Registration
1
Breeder creates draft litter registration with sire/dam info
2
Compliance engine validates: dam age, litter intervals, max litter counts, required health tests
3
Submitted to Zuchtwart review queue
4
Zuchtwart reviews: approve, reject, or request more info
5
After birth: whelping report with counts, complications, vet info, SKG reference number

Business Purpose

The problem, value propositions, revenue model, moat, and strategy.

Problem
🚨 What Problem Does Welpenmatch Solve?
  • Swiss puppy buyers have no reliable way to find verified, responsible breeders
  • Existing platforms (tutti.ch, Facebook groups) have no trust verification or compliance checks
  • Breed clubs run on paper, email, and Excel β€” no digital compliance infrastructure
  • Swiss cantonal dog law is complex and fragmented across 26 cantons
  • Breeders lack professional tools for managing inquiries, waitlists, and operations
Value Propositions
👤 For Buyers
  • AI-powered breed and puppy matching based on lifestyle
  • Verified breeders with trust badges and SKG certification
  • Secure on-platform payments with rehoming guarantee
  • Canton-specific legal information and compliance awareness
  • Comprehensive education hub (Hundewelt)
🏡 For Breeders
  • Full operating system: profile, dogs, litters, waitlists, chat, documents
  • AI-assisted bios, responses, and content generation
  • Premium website with custom subdomain and inline editing
  • Stripe-powered payments with 100% of listed price received
  • Compatibility scoring to prioritize quality buyer matches
🏛 For Breed Clubs / SKG
  • Digital replacement for paper/email/Excel workflows
  • Structured health-test verification and litter registration
  • Zuchtwart compliance review queues
  • Auditable progression from breeder to litter to puppy records
  • Scalable framework across 112 SKG clubs
Revenue Model
💰 Revenue Streams
StreamModelDetails
Transaction fees5% platform fee per paymentCharged on deposit + final payment, buyer covers it
Premium subscriptionsMonthly/annual SaaSSupaZuechter: website builder, AI tools, custom domain
Affiliate shopCommissionCurated breeder products with outbound affiliate CTAs
Competitive Moat
🏰 Defensibility Layers
  • Swiss cantonal regulation system β€” deep compliance knowledge across 26 cantons
  • Breed club admin tools β€” operational lock-in with Rasseklubs and Zuchtwarte
  • Breeder operating system β€” switching cost via data, workflows, and website
  • Trust verification pipeline β€” SKG, health tests, compliance badges
  • AI features grounded in domain-specific Swiss breeding data
  • Network effects: breeders attract buyers, buyers attract breeders
📅 Strategy Arc
  • Phase 1: Consumer marketplace for buyers and breeders
  • Phase 2: Operational tooling for breeders (portal, site builder, AI)
  • Phase 3: Compliance/admin tooling for breed clubs
  • Phase 4: SKG partnership and ecosystem integration
🚀 What's Next β€” Roadmap
✅ What's Built β€” Current State
AreaStatusDetails
Core platformDoneNext.js 15 / React 19 / TypeScript / Supabase schema deployed
Auth + onboardingDone9-step breeder + 8-step buyer onboarding, autosave
Breeder portalDone19 portal routes β€” full breeder OS
MarketplaceDoneSearch, listings, inquiry lifecycle, chat
AI featuresDoneBreed/puppy matching, bio writer, response AI
PaymentsDoneStripe Connect, subscriptions, two-stage payments
Email systemDone11 live templates via Resend, 4 languages
Cantonal systemDone26 cantons in schema, sellability checks
Breeder site builderIn ProgressRegistry-based builder, inline editing, AI prefill
Club admin toolsIn ProgressSchema done, Phase 1 auth + member layer underway
Image optimizationIn ProgressSupabase transforms replacing Vercel optimizer
108 SKG clubs seededDone108 clubs + ZAR data in DB
🔹 Phase 1 β€” Next 60 Days
  • Finalize site builder β†’ launch Premium tier
  • Club admin: auth + member layer
  • Health test verification queue
  • Litter registration pipeline
  • Wire email_verification trigger
  • post_purchase_welcome integration
  • Security hardening
  • Supabase image optimization rollout
📋 Phase 2 β€” Club Ecosystem
  • Full Zuchtwart app at zuchtwart.welpenmatch.ch
  • Whelping report workflow
  • Compliance overview + eligibility matrix
  • Decision audit trail
  • clubs.welpenmatch.ch full rollout
  • Win first Rasseklub as reference
  • Prepare SKG partnership pitch
🌍 Phase 3 β€” SKG + Scale
  • SKG partnership + official endorsement
  • Unlock breeder supply at scale
  • Expand to AT/DE market
  • FCI import/export compliance tools
  • Vet data integration
  • AI regulation updates (dictate β†’ ZAR)
  • AMICUS registry integration
Non-Functional Requirements
⚡ Performance
  • Lighthouse score > 90
  • Core Web Vitals compliance
  • WebP/responsive image optimization
  • SSR for SEO-critical pages
🔒 Security
  • RLS on all database tables
  • Server-side auth validation
  • Signup rate limits by IP/email
  • Centralized HTML sanitization (isomorphic-dompurify)
  • Soft deletes, no sensitive data in URLs
🌐 SEO and Localization
  • German/de_CH metadata, Open Graph, Schema.org
  • Sitemap, clean breeder slugs
  • Responsive: mobile 375px, tablet 768px, desktop 1280px+
  • Privacy: configurable retention (default 365d), marketing opt-in