Universal pro inbox: 6 source adapters (Angi, Thumbtack, Houzz, Google LSA, email, SMS)

By Netanel Presman, General Contractor (CSLB #1105249) · Published · 2 min read · Wave 292

Summary

Wave 292I ships the universal pro inbox: 6 source adapters that pull contractor leads from Angi, Thumbtack, Houzz, Google Local Services Ads, generic email, and SMS into one ranked AskBaily inbox. Contractors stop juggling six tabs. RFC 5322 + RFC 2047 email decoding, base64, quoted-printable.

Article body

Most LA general contractors I work with have six tabs open at any time: Angi pro inbox, Thumbtack notifications, the Houzz Pro app, the Google Local Services Ads dashboard, Gmail for direct inquiries, and SMS for the homeowner who got their number from a referral. The 8 percent of their day they spend just triaging which tab is fresh is a tax that AskBaily can remove without needing to be the only marketplace they use.

Wave 292I is the universal inbox: six adapters in lib/pro-inbox/adapters/ that normalize messages from each source into a single InboxItem shape, plus a ranker in lib/pro-inbox/ranker.ts that scores items by Wave 292K predictive-churn signal, project value, regulatory match, and freshness. The result is one ranked list the contractor sees in the AskBaily Pro mobile app or on the /for-pros/inbox web view.

The adapters are not all the same. Angi and Thumbtack do not publish a partner inbox API; both adapters are email-based, parsing the lead-notification emails the platforms send when a homeowner submits a request. RFC 5322 with RFC 2047 encoded-word handling for the subject lines, base64 and quoted-printable for the bodies, and a tolerant parser that handles the variant formats both platforms have shipped over the past 18 months. Houzz Pro has a real API; the adapter authenticates with the contractor's Houzz Pro session token and pulls inbox items directly. Google Local Services Ads also has an API but it requires the contractor to OAuth into their Google Ads account; the adapter shepherds them through that flow on first connect.

Generic email and SMS are the catch-all adapters. Email goes through a contractor-specific forwarding address (e.g., [email protected]) that strips signatures, normalizes the lead intent, and posts to the inbox. SMS arrives through a contractor-specific Twilio number that the AskBaily backend forwards into the inbox without changing the original conversation thread on the contractor's phone.

The ranker is the part that makes the inbox useful. A contractor with 60 inbound messages does not need a flat chronological list — they need the three urgent ones surfaced. The ranker reads four signals: (1) Wave 292K predictive-churn — homeowners who look likely to disengage soon get triage priority, (2) project value — high-value projects rank higher, (3) regulatory match — projects in cities the contractor is licensed for surface above out-of-jurisdiction inquiries, (4) freshness — anything older than 72 hours gets a freshness penalty. The four signals are weighted; the weighting lives in lib/pro-inbox/unified-inbox.ts and is calibrated against contractor click-through.

41 tests cover the email parser edge cases (RFC 2047 mixed encoding, broken Content-Transfer-Encoding, missing Date headers), the API adapters' shape normalization, the ranker math, and the unified-inbox dispatch. We ship recorded email fixtures from Angi and Thumbtack notifications (with PII redacted) so the parser test runs offline.

The strategic frame: we do not need to displace Angi and Thumbtack to win the contractor's day. We need to sit on top of them as the operating system. Once the universal inbox is live, the contractor's Angi and Thumbtack subscriptions become commodity inventory feeding into AskBaily's ranking, and the contractor's loyalty migrates to wherever the ranker is best — which we can iterate on faster than either incumbent.

Sources & references

Commit attestation

Tests green
41
Files changed
9
Lines added
1,100
Waves
292
Author
netanel

Commit SHAs are from the AskBaily private repository. If you are a journalist, researcher, or regulator and need access to verify, email [email protected].

Frequently asked

Does AskBaily replace Angi and Thumbtack for contractors?
Not for everyone, not yet. Wave 292I is meant to sit on top of Angi and Thumbtack so a contractor does not have to abandon either platform to use AskBaily. Over time, contractors who get higher conversion through AskBaily's matching shift more of their attention here organically.
How does the inbox handle Angi or Thumbtack lead-fee economics?
We do not pay the lead fee on the contractor's behalf. The contractor pays Angi/Thumbtack as before; AskBaily only ranks the lead higher or lower in the unified view. Our take-rate model (Wave 292C) is independent of how the lead originated.
Is the email adapter HIPAA / privacy compliant?
We strip signatures, redact PII not relevant to the lead intent, and store only the structured InboxItem in MariaDB. The original email is held for 30 days per the SAR retention policy and then purged. Contractor-specific forwarding addresses can be revoked at any time from /for-pros/inbox/settings.
← All postsRoadmapCommitmentsChat with Baily →