Comparison · Dunwright vs Paraglide

Why teams add Dunwright next to Paraglide.

Paraglide is built for customer success — NPS, health scores, renewal signals. The moment AR turns into the bottleneck, you need a collections layer beside it. Dunwright is that layer: aging-based dunning, QuickBooks as the ledger of record, Stripe settlement write-back, TCPA quiet hours, and a daily cash digest.

Side by side

What Dunwright adds beside Paraglide.

Each row names the artifact a Dunwright trial would walk you through — no hand-wavy “we’re better” framing.

CapabilityDunwrightParaglide
Aging-based dunning ladderDunningSequence model + editor at /app/sequences; nightly cron `dunning-sender` at 0 2 * * * (polsia.toml) walks the queue and delivers a four-step escalation.No aging-report dunning ladder — Paraglide is a customer-success / health-score product, not a collections product.
QuickBooks as ledger of recordQB Online polled as ledger of record; the dunning queue is exactly what is currently overdue, not what an export said last night.Reads account activity but doesn’t poll QuickBooks as the ledger of record; no overdue-invoice queue to walk.
Stripe settlement write-back/api/stripe-billing/verify receives the cleared payment and writes it back to the matching Invoice; short-pays and partial splits are flagged inline.CS-focused — payment confirmation flows into the health score, not a settlement loop back to a specific invoice by id.
TCPA / quiet-hours gatingComplianceSettings.quietHoursStart/End per owner (default 21:00–09:00, wall-clock HH:MM); editor at /app/settings; dunning-sender holds every send inside the window.No TCPA-aware send window — without a dunning sender, there’s no automation to hold against the customer’s quiet hours.
Daily cash digestDigestRun model with per-owner lastSentAt cursor; cron `daily-digest` at 0 7 * * *; Slack-delivered summary of what fired overnight.No native daily AR digest; CS dashboards, not collections.
Per-account AR-aging assistantPlain-English aging-report chatbot at /app/assistant (src/components/custom/assistant/assistant-chat.tsx) — ask "who is most past-due this week" and get a per-account read.Health-score chatbot — “what is this account’s NPS”, not “who owes what”.

Every Dunwright cell above maps to a shipped feature: a Prisma model, a cron in polsia.toml, or a route handler you can audit in the repo.

Want the feature list in plain English? See the features page.

How they fit

Paraglide stays where it is. Dunwright owns the collections layer.

  1. 01

    Paraglide keeps owning account health.

    NPS, health scores, and renewal signals stay in Paraglide — Dunwright does not duplicate that data; it adds the collections layer Paraglide is not designed for.

  2. 02

    Dunwright polls QuickBooks as the ledger of record.

    The dunning queue is exactly what QB Online shows as currently overdue. The DunningSequence editor at /app/sequences holds the four-step ladder; polsia.toml schedules `dunning-sender` at 0 2 * * *.

  3. 03

    Stripe settlement writes back through `/api/stripe-billing/verify`.

    Cleared payments hit the matching Invoice by id; ComplianceSettings enforces TCPA quiet hours before every send; the daily digest at 0 7 * * * lands in Slack the next morning.

Why teams add Dunwright

The first week is where the gap opens up.

Paraglide tells you when an account is at risk of churning. It does not tell you which invoices are most past-due, and it does not run the dunning sequence that closes them. TheDunningSequenceeditor at/app/sequencesowns the four-step ladder; the nightlydunning-sendercron at0 2 * * *walks the queue while the team sleeps, applies the template + channel + offset, and writes a per-customer escalation row so the morning inbox shows what actually fired. Paraglide’s CS view stays intact — Dunwright just feeds it the resolution.

Reconciliation is where the second gap appears. QuickBooks Online stays the ledger of record and Dunwright polls it so the dunning queue is exactly what’s currently overdue — not what an export said last night. Stripe settlement flows back through/api/stripe-billing/verify, which writes the cleared payment to the matching invoice; short pays and partial splits are flagged inline rather than buried in a weekly reconciliation report. The collections loop closes without a human reviewing a CSV.

The third piece is the morning digest, the quiet-hours window that keeps it safe, and the per-account AI that lets the team ask about aging without exporting a report. Thedaily-digestcron at0 7 * * *reads the per-ownerDigestRun.lastSentAtcursor and delivers the summary to Slack — theComplianceSettingseditor at/app/settingsgates every send inside the owner’s quiet window before it ever reaches the customer, and the aging-report assistant at/app/assistantanswers “who is most past-due this week” in plain English.

Ready to add a collections layer next to Paraglide?

Pick the plan that fits your week.

No seat fees, no per-invoice penalty, no commitment — cancel from the dashboard any time. Paraglide stays where it is.

See plans

Prefer email? dunwright-5@polsia.app.

Compare with

Two more side-by-side reads.

Paraglide is one of three comparisons in the /vs/ tree. The other two answer adjacent questions for teams shopping their collections layer.

Browse all alternatives

LedgerUp

Dunwright vs LedgerUp.

Always-on dunning, QuickBooks-native reconciliation, the daily cash digest, TCPA quiet hours, and per-account pricing with no seat fees.

Read the LedgerUp comparison

QuickBooks accounts receivable

Dunwright vs QuickBooks accounts receivable.

QuickBooks stays the ledger of record; Dunwright adds the chasing + dunning + settlement layer QuickBooks itself does not run.

Read the QuickBooks comparison