Work
Projects I've run
A selection of recent work. Company names are left out, but the problems and the fixes are real.
-
Merging an acquired company into the parent Google Workspace
About 100 people · cutover over one weekend
The problem
An acquired company ran its own Google Workspace. Its people had to land in the parent tenant with their mail, calendars, files, groups, and integrations intact. On an earlier migration, copying Drive files had broken every shared link.
What I did
- Pre-provisioned 118 groups and 717 group memberships before cutover
- Wrote a resumable Apps Script tool that moves Drive files instead of copying them, so links keep working, and logs every move to a sheet
- Automated shared drive creation and user mapping with a service account and domain-wide delegation
- Triaged every app that used Sign in with Google, color-coded by who had to act: IT, the user, or nobody
- Reviewed 23 workflow automations that would break when accounts changed
Result
Cut over in one weekend with every Drive file and link intact. Calendar duplicates were the main issue, limited to 11 people.
-
Moving acquired laptops onto company management
Three acquisitions · Mac and Windows
The problem
Each acquired team’s laptops were managed by their old company. They had to move to the parent’s device management and endpoint protection without IT touching every machine.
What I did
- Built a self-service Mac migration with about 30 minutes of hands-on time and a 30-day window
- Wrote the guide plus announcement, reminder, and last-day messages for email and Slack, refined after each round
- Ran the Windows migration in waves so problems surfaced on a small group first
Result
All 38 Macs in the most recent round enrolled by the deadline, with 27 of them still pending three days out. The Windows fleet reached 75% after two waves, with 15 machines migrating with no hands-on help.
-
Retiring two inherited identity providers
Entra ID · SAML, OIDC, and SCIM
The problem
Two acquired companies brought their own Okta tenants, so employees had two places to sign in and IT paid for both. Some people sign in with their original company address and others with the parent’s, and one SSO setup had to handle both.
What I did
- Moved apps to Entra ID one at a time, running old and new sign-in side by side so nobody was locked out mid-move
- Built a NameID rule that uses a directory attribute when it is set and the primary email when it is not, with SCIM split by the same attribute
- Set up OIDC and SCIM for a product’s own admin platform, with a layered group model that grants elevated access without resetting anyone’s settings
- Raised the pace of new SSO apps from about one a week toward one a day to clear a backlog of about 100 apps
Result
The CRM moved to automated provisioning with no disruption. Both inherited identity providers are on a schedule to shut down by early next year.
-
Tying every laptop to an owner
About 1,600 devices · five systems of record
The problem
The asset tracker, two device management platforms, endpoint protection, and the HR system each had a different idea of which laptops existed and who had them.
What I did
- Built a report with a teammate that matches every device serial number to one employee across all five systems
- Flags devices that are unmanaged, unprotected, or enrolled but no longer checking in
- Found about 50 laptops from one acquisition that were not reporting to endpoint protection and fixed them
Result
It surfaced 373 people with no assigned device and 28 laptops in a storage locker that no system knew about. Full compliance rose from 66% to 77% in two months, on the way to a 98% target.
-
Choosing and rolling out a secure web gateway
About 1,700 endpoints · two proofs of concept
The problem
The company relied on DNS filtering alone and needed a full secure web gateway that would work with its existing VPN and offices on three continents.
What I did
- Ran two vendor proofs of concept in parallel
- Dropped the first vendor when it conflicted with the full-tunnel VPN
- Tested the second with 10 people in India, Argentina, and North America
- Negotiated a two-year agreement through the reseller
Result
No issues across all three regions in testing. The gateway replaces the old DNS filter.
-
Moving integrations off an on-prem server
Google Cloud · HR and security data pipelines
The problem
Data pulls from the HR system and the endpoint security platform ran as PowerShell scripts on an on-prem server, because the vendors only accept API calls from an allowlisted IP address.
What I did
- Built a gateway project in Google Cloud with one static outbound IP for every vendor allowlist
- Moved each pipeline to Cloud Run in its own project, writing to BigQuery, so HR data and security data stay separate
- Cut the security data pull over first, then brought the HR pipeline live alongside the old one before switching
Result
One static IP for vendor allowlists, both pipelines running in the cloud, and the old server on its way out.
-
Fixing an overheating server room, then every server room
Office network room · planned power outage
The problem
During a planned building power outage, an office server room went past 30°C. The portable air conditioner shared a circuit with the network gear, so it went down with everything else.
What I did
- Measured the room’s real heat load: about 1,020 W, or 3,425 BTU per hour
- Sized a dedicated 1.25-ton cooling unit on its own circuit
- Turned the incident into an audit of every site’s server room against written temperature standards
Result
A cooling fix sized from measurements, and one standard for every office instead of one fix for one room.
-
Opening floors, closing an office, and rescoping a refresh
High-rise build-out · office closure · conference rooms
The problem
In the same quarter, two floors of a high-rise office needed their network built out, one office was closing, and a conference room refresh came back far over budget.
What I did
- Scoped low-voltage cabling for access points, cameras, card readers, check-in displays, and meeting rooms across two floors
- Closed the office and arranged certified laptop destruction weeks before the lease ended
- Cut the refresh from five conference rooms to three when the contractor bid came in at three times the budget
Result
Each project ran through vendors with a clear owner, without IT staff on site full time.
-
Moving an acquired team onto the company phone system
About 100 people · RingCentral
The problem
An acquired team had to move onto the parent’s phone system, where 7 of their extensions were already taken by some of the 130+ existing users.
What I did
- Changed the 7 conflicting extensions instead of renumbering 130+ people
- Told each affected person their new number before go-live
- Kept non-employee franchise numbers out of scope after checking the deal terms
Result
The team went live on the new system, and the old phone licenses ended four days later.
-
Finding every tool an acquisition brought with it
Tools and contracts from 18 sources
The problem
Each acquisition arrives with its own SaaS subscriptions, chat workspaces, and contracts, and nobody has the full list.
What I did
- Built an acquisition tracker overnight that pulls tool and contract data from 18 sources
- Found 172 Slack workspaces under company domains and built the case for one organization
- Built a bot that moves Slack channels between workspaces
- Cleaned up 187 unused licenses out of nearly 2,000 seats in one platform and cancelled duplicate billing from acquired companies
Result
One list of what every acquired company pays for, and fewer seats paid for twice.
-
An AI agent that keeps project tickets current
Granola, Slack, email, and Jira
The problem
Decisions made in meetings and chat rarely made it back into the ticket that tracked the work.
What I did
- Built an agent that reads meeting notes after every meeting and comments on the matching Jira issue
- Limited it to two projects and to comments only, so it can never move or close work
- Updates from Slack and email ask for approval before posting
Result
Tickets reflect what was actually decided, without anyone retyping it.
No projects match that filter.
Tools
Platforms I work in every day
- Identity
- Entra IDOktaAuth0Duo
- Workspace
- Google WorkspaceMicrosoft 365SlackRingCentralAtlassian
- Devices
- Kandji / IruIntuneAsset PandaFirstbase
- Security
- CrowdStrikeZscalerDNSFilter
- Cloud and automation
- Google CloudCloud RunBigQueryGAMApps ScriptJira