Resume
Efficiently × Procore Platform integration 2026 · Use case

Procore Integration

A full two-way project synchronization system between Efficiently and Procore.

I designed the integration end to end — connection logic, synchronization and every edge case — so users always understand what state their projects are in and what they can do next.

Role
Product Designer
Timeline
Apr — Jun 2026
Scope
90+ screens12 connection & sync scenarios
Product
.efficientlyB2B SaaS · Construction
About the platform 01

Efficiently

Efficiently is a platform for developers, collaborators and architects who create and manage collaborative construction projects together.

It brings project management, team communication and contractor data into one place. I've worked at Efficiently as a UX/UI designer for three years — from refining UI elements and page structure to independently designing complex platform features, validated with a focus group of active users. The Procore integration is one of them.

450+
UI components in the design system
70+
design tokens in use
2–3
features shipped every month
3
years on the product team
Case 02

Context & Challenge

Procore is one of the largest enterprise platforms for construction project management, already used by a portion of our clients. Integrating was strategic: the market was moving toward similar integrations, and it was important for Efficiently not to put a barrier between the Procore that users already knew and ours.

The challenge was to design not a one-time connection but a full data synchronization system. Users can connect, disconnect, reconnect and remove projects at any time — and the system has to stay clear at every step.

My role

The integration flow was designed end to end, covering connection logic, synchronization and all edge cases: disconnecting, reconnecting, editing and removing a project. Every state and transition was mapped in detail so the experience stayed clear and predictable, regardless of how or when a user chose to manage their connected projects.

Two phases
Phase 1 · Procore Connection4 use cases
Phase 2 · Connect & Sync Projects8 use cases

After checking feasibility with the backend developers, we split the integration into two phases.

Phase 1 · 4 use cases 03

Procore Connection

Phase 1 is a one-time, company-level connection: the Company Admin / Account Owner links the Efficiently workspace to a Procore organization in the Admin Console via SSO authorization. Everything in Phase 2 builds on this state.

The flow covers the happy path and every exit from it: denied authorization keeps the account "Not connected", a failed integration raises an error snackbar with a retry, and the user is never left in an unclear state.

01 · Account Connection
StartAccount Connection tab · Not connected
AClick “Connect”
BProcore: Authorization required
B1Deny in Procore → stays Not connected
CConnecting… (button disabled)
C1Integration unsuccessful – snackbar
RetryRepeat: click “Connect” again
DSuccess snackbar
EConnected – Company pill
DoneAccount connected · ready to link projects
Admin Console · Integrations · Procore — one-time SSO connection at company level.
System thinking 04

Project Status Logic

Beyond the main connection scenario, a key part of the work was a complete model of project states — what happens when a user pauses synchronization, restores it, or removes a project from the list entirely.

SyncingConnectedData flows both ways. Sync per project or in bulk.
PausedDisconnectedSync paused, the link is kept. Restorable from the More menu at any time.
FinalRemovedRemoved from the sync list. The project becomes available for connection again.
iPer-row actions in every state: Edit · Sync Project · Disconnect · Remove
Phase 2 · 8 use cases 05

Connect & Sync Projects

Eight use cases for the day-to-day: connecting, syncing, editing and removing projects — each mapped as its own flow, with every state and exit accounted for.

01

Connect Projects

A compare fly-in panel: the user searches Procore companies and projects, matches them side by side with Efficiently projects, or creates a new Efficiently project from Procore data.

Connect projects · flow
StartClick “Connect Projects”
ACompare Projects fly-in panel
BSearch Procore companies / projects
B1Already connected / tooltip, row disabled
CSelect match · compare side by side
C1Create new Efficiently project
DConfirm connect
ERow added · Connected pill
DoneProjects connected
02

Sync Projects

Bulk “Sync Projects” or per-row sync. Rows show live progress, statuses and last sync time; a snackbar confirms completion. Failures keep the previous sync time and offer a retry.

Sync projects · flow
StartConnected Projects table
BRow more menu → “Sync project”
AClick “Sync” – bulk sync all
CSyncing… rows show progress
C1Sync failed – snackbar
C2Row keeps previous sync time
RetryRepeat sync for that project
DLast synced · “just now”
DoneAll projects up to date
03

Disconnect → Reconnect

Disconnect pauses syncing for a single project without losing the link. The confirmation states exactly which pair stops syncing and that reconnecting is one action away in the More menu.

Disconnect → reconnect · flow
StartRow more menu
A“Disconnect project”
BConfirm disconnect
B1Cancel → stays connected
CRow shows Disconnected pill
DMore menu → “Reconnect project”
EConnected again · “just now”
DoneAll projects up to date
04

Edit Project

Row more menu → “Edit project”. A field-level review compares each Procore value with the current Efficiently value. The user selects exactly what will apply before confirming.

Edit project · flow
StartRow more menu
A“Edit project”
BEdit Project modal
B1Cancel → no changes saved
CReview Changes
C1Back → keep editing
DoneApplied · row updated
05

Remove Project

A warning modal makes the consequence explicit: the row leaves the sync list, and the project becomes available for connection again.

Remove project · flow
StartRow more menu
A“Remove project”
BRemove Project modal · warning
B1Cancel → back to table
CConfirm remove
DoneRow removed from table
06

Search & View Connected

Search across companies, Procore and Efficiently projects in the connected list; statuses stay visible, so the result is never ambiguous.

Search & view · flow
StartProjects tab · Connected Projects
AFocus search field
A1Clear query → full list restored
BType query · dropdown suggestions
CSubmit search (Enter)
C1No results — empty state
DoneFiltered results in table
Focus group 06

Hypothesis Validation

Efficiently is an early-stage product with a limited number of clients, so instead of quantitative metrics we rely on a focus group of active users. A/B test results will inform refinement of the flow ahead of a wider release.

H1

Users understand the Procore connection process on the first try, without contacting support.

H2

It is clear what data will be pulled from Procore before the user confirms the connection.

H3

The difference between "Disconnected" and "Removed" is clear — what can be restored versus what starts over as a new action.

H4

Users notice when a project disconnects from sync if it happened outside their own action.

H5

Users have enough control over when and what gets synced — or expect more automation.

Takeaways 07

Reflection

The hardest part was designing a system where the user always understands what state their project is in and what actions are available, given that the data comes from an external system Efficiently does not control.

This work taught me to account for a wide range of input factors — from our platform and the external system alike. I adapted to information that kept updating as the work progressed and checked solutions against platform capabilities and backend feedback, so they stayed technically realistic, not just good-looking on paper.