# Treating Pricing Changes Like Code Deploys

DevFeed: [Treating Pricing Changes Like Code Deploys](<https://devfeed.tech/articles/treating-pricing-changes-like-code-deploys-24730.md>)

Original publisher: [Read original article](<https://medium.com/thumbtack-engineering/treating-pricing-changes-like-code-deploys-dc8c26ab6c5d?source=rss----1199c607a13f---4>)

Author: Ananda Kanagaraj Sankar

Published: 2026-07-22T18:09:48Z

Content type: article

Language: en

Sources: [Thumbtack Engineering - Medium](<https://devfeed.tech/sources/thumbtack-engineering-medium.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [DynamoDB](<https://devfeed.tech/topics/dynamodb.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Code review](<https://devfeed.tech/topics/code-review.md>)

Tags: [code-review](<https://devfeed.tech/tags/code-review.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [devops](<https://devfeed.tech/tags/devops.md>), [dry-run](<https://devfeed.tech/tags/dry-run.md>), [dynamodb](<https://devfeed.tech/tags/dynamodb.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [go](<https://devfeed.tech/tags/go.md>), [marketplaces](<https://devfeed.tech/tags/marketplaces.md>), [monitor](<https://devfeed.tech/tags/monitor.md>), [platform-engineering](<https://devfeed.tech/tags/platform-engineering.md>), [pricing-strategy](<https://devfeed.tech/tags/pricing-strategy.md>)

## AI overview

This article explains how Thumbtack handled large pricing changes by comparing them with code deployments. Pricing bids stored in DynamoDB were rewritten in bulk using custom Go scripts, but those scripts lacked built-in resumability, runtime control, and durable records for undoing changes.

## Source excerpt

Making large pricing changes safe to run, safe to resume, and safe to undo. Most days, shipping code to production at Thumbtack is a non-event. You merge your change, a deployment pipeline takes it from there and it rolls out while you monitor the rollout. If a deploy stalls, the system already knows which step it stalled on. If it goes wrong, rolling back is a button away. It's the return on years of platform work, so routine now that we mostly forget it's there. Which is the point: Safety is built into the road, not into how carefully each person drives. Changing pricing data never had that platform at Thumbtack. Pricing is how a marketplace like ours sustains itself. It lets us capture a share of the value we help create, and it's something we tune on an ongoing basis rather than set once. We test pricing changes, measure their impact and roll out the ones that work. Mechanically, this runs on an auction. When a customer creates a project on Thumbtack, pros compete for the lead, and what a pro is willing to pay shows up as a bid. Those bids are stored per pro's service offering (a specific offering a pro provides, like house cleaning or landscaping) as bid settings in DynamoDB. Rolling out a pricing change means rewriting those settings in bulk, often a few hundred thousand of them at a time, several times a year. For a long time, each of the pricing rollouts was a custom Go script written for that specific change. The scripts were production grade. They went through code review, ran in staging first, did a dry run before any live write, and were rolled out in stages. That was a reasonable way to work: the changes are infrequent, each one is genuinely different from the last, and a script you can read top to bottom is easy to trust. But what reviews and a good runbook can't give you is the runtime machinery. A script doesn't remember where it was when it died, so it can't safely pick up where it left off. It has no real sense of how hard it's pushing the database