Loading…
Loading…
Loading…
Refreshed automatically every 15 minutes by api-worker's Cron Trigger. "Down" means the Worker didn't answer within 8 seconds — check whether it was ever deployed, or a secret/binding is missing, before assuming a runtime error.
Loading…
Every provider and customer on the platform in one place. Select anyone to see their full profile and every job or bid they've done or have ongoing. To suspend/reactivate access, reset a password, or edit every field (license, insurance, trust score), use full User Management →
Three-stage resolution: direct resolution between parties → platform mediation → final platform decision. Escrowed funds stay frozen throughout (Trust & Safety policy).
Revised 2026-07-12 policy: the homeowner's payment stays in escrow through up to 2 failed providers on the same job — only a 3rd consecutive failure triggers a refund. Each job below is back open for a new provider (the failed one is excluded from re-bidding it).
| Job | Failed attempts | Status | Bidding closes | Amount held in escrow |
|---|
2nd non-performance strike = 30-day suspension. 3rd strike = permanent ban. Auto-applied by api-worker's Cron Trigger — see Trust & Safety policy.
| Provider | Status | Suspended until | Strikes | Pending fees |
|---|
Fees owed for non-performance (Stripe's non-refundable processing fee + $15 admin cost), recovered automatically from each provider's next completed-job payout.
| Provider | Pending fee balance | Strikes | Status |
|---|
| Date | Provider | Job | Reason | Fee charged | Strike # | Consequence |
|---|
Support tool: if a homeowner or provider says they didn't receive their email verification code, look it up here by the email address they used. Shows the 10 most recent codes for that address, including already-used or expired ones.
| Code | Purpose | Channel | Status | Requested | Expires | Attempts |
|---|---|---|---|---|---|---|
| Enter an email above and click Look up. | ||||||
Identity (ID) verification is required for every provider. State license is required only where the provider's state calls for one — see Trust & Safety. Approving here unlocks bidding (moves basic → verified). Approve now refuses unless the provider's uploaded documents actually check out — to see those documents, record a per-document review decision, or use the audited override, go to Verification Review →
| Provider | Identity (ID) | State license | Insurance | Stripe Connect | Action |
|---|
| Provider | Tier | Trust score | Rating | Jobs | Stripe Connect |
|---|
Every job still open for bidding or with bidding closed but not yet completed/refunded. Use this to spot jobs stuck with no provider (escrow funded but nobody assigned) and to assign a provider directly — from an existing bid, or from scratch if the provider never bid at all.
| Job | Homeowner | Category | Status | Escrow | Bids | Assigned provider | Actions |
|---|
Sends immediately to every active provider and/or homeowner with an email on file. Each recipient gets it in their own saved language (My Account language setting) — anyone who hasn't set one gets English. Real send via email-worker, with unsubscribe + CAN-SPAM footer applied automatically, same as the platform's other promotional emails.
| Sent | Subject | Audience | Recipients | Sent | Skipped | By |
|---|
Homeowner referrals earn $25/$25 credit (min $150 job, cap 5/12mo). Provider referrals earn a free-commission job (cap 10/12mo). Rewards issue automatically when the referee's first qualifying job completes.
Loading…
| Job | Homeowner | Provider | Amount (homeowner pays) | Stripe fee | GroundBid profit | Payout (90% of gross) | Release PIN | Status | Action |
|---|
The three real, named Stripe connected accounts GroundBid operates: GroundBid Receivables (every homeowner payment lands here first, held until job completion is approved), GroundBid Payables (a provider's earned share moves here from Receivables on release, then out to their own connected account — money currently in flight to be paid), and GroundBid Profits (GroundBid's commission, moved here directly from Receivables — actually available to withdraw). Also shows how many providers/homeowners are genuinely linked to a real Stripe id and can receive/pay into the system.
Money currently held in escrow that's owed to a provider but not yet transferred — real liability sitting in the Stripe platform balance right now.
Escrow rows marked "completed" that are missing a real Stripe transfer or payment-intent id — should always be empty. Recurring check per accounting-manager.
Pulls GroundBid's real connected Stripe account directly — cross-checks it against every provider's Stripe account id and every escrow row's payment-intent/transfer/connected-account id. Flags anything on either side with no real counterpart on the other.
Filter by period, service category ("area"), or a specific provider/customer — the same numbers shown here also appear on that user's own profile in the Users tab.
Platform-wide kill switch (2026-08-02). Enforced server-side on every signup/job-posting/bidding/bid-acceptance/checkout-session route regardless of what this page shows — this panel only controls it. Already-committed jobs (escrow already held or already paid) keep running through provider-agree/complete/release/dispute no matter what this is set to; only NEW signups/jobs/bids/acceptances/checkouts are affected. Flipping this requires a fresh MFA code (same second factor as releasing funds), since this has a bigger blast radius than any other setting on this page.
Checked only while service state is invite_only, above. An email OR phone match is enough — a signup/job-post/bid request is compared against whichever identifier it carries. Phones are matched on their last 10 digits, so formatting (spaces, dashes, +1) never causes a false "not allowed."
| Kind | Value | Note | Added by | Added | |
|---|---|---|---|---|---|
| Loading… | |||||
MFA is a real, server-generated one-time code platform-wide (see note above the login screen) — always sent by email, and also by text if a phone number is on file. Every row below actually signs in this way, not via the WebAuthn/TOTP/SMS-as-a-selectable-method options this table used to show as invented placeholder data unrelated to any real account.
| Role | Status | Last login | |
|---|---|---|---|
| Loading… | |||
