quoteSubmissions row vs ≥1 submission of any type)—product must lock numerators/denominators and cohort (all companies vs pilot brands).Part 1. "ProPair" Adoption:
Need to show the funnel over time. The funnel being a 3 step process.
Core Inspection -> Repair List Created -> Quote Requested
repairlists collection. Match the _inspectionId to the inspections in the time frame. If one exists, then that would count towards this step. quoteRequests array that is not emptyquoteSubmissions array that is not emptyUsing a group bar we should show the funnel adoption over time. This will help us understand whats happening trend wise.
We also need to be able to see the different types of submissions that occurred:
quoteSubmissions are the newer and future way to store the submissions.
{
"submissionType": "thumbtack",
"categoryId": "handyman",
"submittedAt": {
"$date": "2026-04-18T21:35:12.806Z"
},
"includedItemIds": [
"56b91495-545a-55c6-ad21-bf9749ecaab9",
"4f5e4b71-a254-5a8f-a713-fc3351be18f2",
"9a95ef31-bfcb-4644-bb3e-2bde6fd8c3a7",
"7f4b1fe6-4e4e-5ccf-bd92-18c672d698fe"
],
"providerMetadata": {
"thumbtackCategoryId": "109125193401647362",
"businessId": "539556435931537425",
"businessName": "Delwalt Home Improvement, LLC",
"widgetUrl": "https://www.thumbtack.com/embed/request-flow?category_pk=109125193401647362&project_pk=577402428740059143&search_form_pk=524529961203294220&search_query=109125193401647362&service_pk=539556435931537425&utm_medium=partnership&utm_source=cma-launchpadhomegroup&utm_tt_session=d6cb79c38b1721378a81d3450e5b444b20cebdbddb0fc9aa9370469b5cd87fec&zip_code=30012",
"thumbtackMode": "prod",
"searchId": "577402428740059143",
"locationMetadata": {
"zipCode": "30012",
"requestLocation": "Conyers, GA"
}
},
"_id": {
"$oid": "69e3f910d77068dbe02bf465"
},
"createdAt": {
"$date": "2026-04-18T21:35:12.811Z"
},
"updatedAt": {
"$date": "2026-04-18T21:35:12.811Z"
}
},
quoteRequests are the deprecated values but still need to be added into the info.
{
"_repairCompanyId": "68a74f44d92a8d0e2d54aaf7",
"repairItemIds": [
"7fd820b1-971a-5f33-ad43-c96335cf77b8"
],
"requestedAt": {
"$date": "2025-09-10T23:55:22.858Z"
},
"status": "pending",
"emailJobId": "1701",
"pdfUrl": "https://toolsv2.s3.us-west-1.amazonaws.com/repair-quotes/repair-quote-Pipeliners-2025-09-10-17-55-10.pdf",
"pdfKey": "repair-quotes/repair-quote-Pipeliners-2025-09-10-17-55-10.pdf",
"_id": {
"$oid": "68c20fea77a8f716baece49a"
},
"createdAt": {
"$date": "2025-09-10T23:55:22.864Z"
},
"updatedAt": {
"$date": "2025-09-10T23:55:22.864Z"
}
}
These are done by repair company which is a different collection. Ultimately, all we want to see is some kind of view that shows who is using what out of the actual quotes that are requested.
Part 2: "Concierge" Adoption
This is the statistics on our Home Binder integration. We get paid for every home binder submission. We need to know out of all inspections how the funnel is working here as well.
This should be a stacked bar chart the represents the submissions over time.
On this, the funnel is this: All Inspections -> % of Inspections that have a "Moving Eligible" service -> % where home binder was successfully sent.
Similar to above we should show some KPI boxes. This will be derived from the homebinderintegrations collection by linking it with the inspection IDs. This is likely a mongo view as well. Up to you.
Then we need another chart https://ui.shadcn.com/charts/pie#charts
Where we outline what the reason for the errors was in homebinderintegrations
Some scope:
attik-backend/src/models/repairListSchema.ts — canonical fields for repair list lifecycle (status, categorizationStatus, categoryAssignments, quoteRequests, quoteSubmissions with submissionType including thumbtack). Aggregations for adoption likely group by _companyId, time windows on createdAt / updatedAt / submission timestamps—Decision needed which timestamp anchors “adoption in period.”attik-backend/src/routes/repairList.ts — existing read/write API surface for repair lists; new admin analytics route(s) may live alongside other cross-company admin patterns (Decision needed: reuse an existing admin-only router vs add under e.g. inspection or a new admin-metrics module).attik-backend/src/routes/thumbtack.ts — Thumbtack proxy behavior for client flows; dashboard metrics probably do not call Thumbtack directly but read persisted quoteSubmissions / metadata—confirm with implementer.Reuse this header for all these dashboard tools. Make it a reusable component that accepts all necessary info. There will be more of these.
shadcn charts (already installed) to display this info. attik-frontend/src/app/admin/ today centers Client Care (client-care-dashboard) via adminNavPrimaryButtons in attik-frontend/src/util/data/adminNavButtons.tsx—Decision needed whether this dashboard is a new admin route (with nav entry) or a tab/section inside an existing admin surface.attik-frontend/src/app/tools/data-exports/ (saved reports, date filters) without coupling to the full Reports Hub product unless product wants that reuse.attik-backend/src/models/repairListSchema.tsattik-backend/src/routes/repairList.tsattik-backend/src/routes/thumbtack.ts (integration context)attik-frontend/src/util/data/adminNavButtons.tsxattik-frontend/src/app/admin/client-care-dashboard/ (existing admin dashboard patterns)Please authenticate to join the conversation.
Completed
Main App
15 days ago
Linear
Get notified by email when there are changes.
Completed
Main App
15 days ago
Linear
Get notified by email when there are changes.