Platform staff sign-in
Incorrect email or password.
Sign out
High-risk actions (require step-up MFA)

Loading…

Recent admin activity (admin_audit_log)

Loading…

Recent sign-in activity (auth_audit_log)

Loading…

System health

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…

Users — Providers & Customers

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 →

Open disputes

Three-stage resolution: direct resolution between parties → platform mediation → final platform decision. Escrowed funds stay frozen throughout (Trust & Safety policy).

Jobs being reassigned

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).

JobFailed attemptsStatusBidding closesAmount held in escrow
Suspended & banned providers

2nd non-performance strike = 30-day suspension. 3rd strike = permanent ban. Auto-applied by api-worker's Cron Trigger — see Trust & Safety policy.

ProviderStatusSuspended untilStrikesPending fees
Pending fee recovery

Fees owed for non-performance (Stripe's non-refundable processing fee + $15 admin cost), recovered automatically from each provider's next completed-job payout.

ProviderPending fee balanceStrikesStatus
Strike history
DateProviderJobReasonFee chargedStrike #Consequence
Look up a login/verification code

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.

CodePurposeChannelStatusRequestedExpiresAttempts
Enter an email above and click Look up.
Pending verification (0)

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 →

ProviderIdentity (ID)State licenseInsuranceStripe ConnectAction
Verified provider directory
ProviderTierTrust scoreRatingJobsStripe Connect
Open & in-progress jobs

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.

JobHomeownerCategoryStatusEscrowBidsAssigned providerActions
Send a campaign

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.

Campaign history
SentSubjectAudienceRecipientsSentSkippedBy
Referral program

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…

Escrow & commission ledger
JobHomeownerProviderAmount (homeowner pays)Stripe feeGroundBid profitPayout (90% of gross)Release PINStatusAction
Stripe Accounts — Receivables, Payables & Profits

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.

Payout liability

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.

Reconciliation check

Escrow rows marked "completed" that are missing a real Stripe transfer or payment-intent id — should always be empty. Recurring check per accounting-manager.

Stripe reconciliation (real Stripe account, live)

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.

Reports & KPIs

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 settings
Commission rate
Target platform share of every completed job. The provider is always paid this percentage's complement (default 90%) of the GROSS amount — Stripe's processing fee (2.9% + 30¢ per successful domestic-card charge) comes out of the platform's share, not the provider's, so actual commission revenue runs a bit thinner than the flat rate shown here.
%
Referral / incentive program
Referral codes, redemptions, rewards ($25 homeowner credit, provider free-commission-job credits), and the new-provider-signup first-job commission waiver. Paused 2026-07-26 — while off, every release charges the full commission rate above with no exceptions, and any already-earned credits stay banked but unused until this is turned back on.
License support email
Address the AI-assisted license-verification lookup (POST /licensing/lookup, at license-verification/state-directory.html) references as GroundBid's own contact once you've confirmed the mailbox is actually created, tested, and monitored. Leave blank to keep the assistant using its generic unresolved placeholder instead of a real address. This never gives the assistant any ability to send mail itself — it only tells the user the correct address to write to.
Bidding window
Fixed sealed-bid duration from job publish to close.
24 hours
Two-factor authentication
Required on every account platform-wide — homeowners, providers, and staff. Always sent by email; also sent by text if a phone number is on file for the account.
Enforced ✓
Launch control

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.

Service state
live — open to everyone. invite_only — only allowlisted emails/phones (below) may sign up, post jobs, or bid; everyone else sees "GroundBid is launching soon." paused — no one (admin excluded) may sign up, post a job, place a bid, accept a bid, or start checkout; everyone sees "GroundBid is temporarily unavailable." Defaults to paused and fails closed to paused if it can't be read at all — it is never silently "live."
Invite-only allowlist

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."

Add entry
Add one email or phone at a time.
KindValueNoteAdded byAdded
Loading…
Payments — Stripe Connect
Connection status
Platform Stripe account used to charge homeowners, hold funds, and pay out providers.
Not connected
Account type
Express connected accounts for providers — Stripe-hosted onboarding and identity verification, fastest to launch, $2/mo per active account + 0.25%+25¢ per payout.
Express
Charge model
Separate charges & transfers: homeowner's card is charged to the platform's own Stripe balance immediately on bid acceptance (the escrow hold). A Transfer for 90% of the gross amount moves to the provider's connected account only after the homeowner confirms completion — that 90% is never reduced by card-processing costs. Stripe's standard fee (2.9% + 30¢ per successful domestic charge) is deducted automatically from GroundBid's own share; whatever's left after that is the platform's real commission revenue. No money moves to a provider before work is confirmed done.
Payout schedule
Manual payouts on connected accounts, so funds are only transferred out when GroundBid explicitly releases them — never on a timer.
Manual
Webhook endpoint
Configure this URL in the Stripe Dashboard once payments-worker is deployed (see Hosting Guide Section 11).
https://payments.groundbid.app/webhook
Connect a live Stripe account
Requires payments-worker to be deployed with a Stripe secret key. Currently checks no configured endpoint.
Admin users

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.

EmailRoleStatusLast login
Loading…
Action confirmed and logged to admin_audit_log.