Skip to content
Luke Walsh

Product · Live

50RH.

Sealed bidding for property repairs. I built the marketing site, the app and the API, and I run all three. No customers yet.

From judging spoken estimates on job sites.

  • Founder, product owner and builder
  • Since
  • Live with billing since 7 August 2026. No one has subscribed yet.
  • Last checked

Who it’s for

I spent a couple of years in the trades. I didn’t write estimates. I heard them said out loud on job sites and had to judge whether they were right. Sealed bids give a property manager a price they can defend.

It’s also my third auction product, after ad-exchange auctions in 2003 and a patent filing on auction eligibility.

50RH is built for small residential property-management firms that send repairs out to their own contractors. My first market plan targets firms with 50 to 200 doors (rental units). Property managers come first, ahead of owner-operators.

A manager sends one job to the contractors they already use, gets sealed bids back from a link, awards on the record and follows the work to done. Contractors, tenants and building owners each see the job from their own link.

It’s built for these people. None of them uses it yet. My premise is that a small firm still collects bids by phone and compares them in a spreadsheet. That’s a premise, not something I’ve tested with customers.

What I built

50RH didn’t start as bidding. It began in April 2025 as humidity monitoring for apartment buildings, and the name is the 50% relative-humidity threshold. I added the bidding workflow on 29 July 2026, and by 9 August the app and the site led with it. The sensor hardware from that first version, with signed over-the-air firmware updates, is unfinished and parked.

Today a property manager builds a contractor book and drafts a job for free. The paywall appears only at “Send for bids”. Then they invite their own contractors, collect sealed bids, compare them and award.

  • Contractors bid from an emailed link, with no account and no app. The winner uses the same link to post a schedule, progress notes and before-and-after photos.
  • Only the winning contractor sees the manager’s name and email. Losing bidders never learn who the manager is.
  • AI drafts a job description, a scope of work and a suggested trade from the manager’s photos. The manager edits the draft before saving it. It’s on the paid plan only, and the demo shows a canned draft. For now, AI spend across the whole product is capped at $2 a day.
  • The manager gets an email when a job becomes their move: the first bid, all bids in, work reported complete, or a tenant pushing back on entry. One email per handoff, and never one for their own action.
  • Bids get chased for them. An invite gets at most two reminders, sent between 8am and 6pm Pacific. The manager has a Remind button, and a contractor can pass on the job.
  • Where a building’s owner approves bids, the manager can’t award. The owner is emailed when the bids are ready.
  • A tenant answers an entry notice from a link. Notices follow Oregon’s rule. A property in any other state is refused rather than sent the wrong law, and Washington and Colorado wait until counsel signs off.
  • A price benchmark built from other customers’ sealed bids shows the median for the trade and state over the last 12 months. It appears only once 10 bids from 5 contractors across 3 customers exist. It never shows a minimum or a maximum, and it never reaches a contractor. Production has no cross-customer bids yet, so no manager has seen a number.
  • A manager can import their vendor book from an AppFolio or Buildium export. License and insurance dates show up at award as context. They never block an award.
  • Pricing is flat: $149 a month up to 200 doors and $299 for 201 to 500. Above 500 doors it’s a conversation, and it’s never a percentage of the job.
Two contractors' sealed bids for one job, with amounts and durations, and a third contractor still invited.
Two sealed bids and one open invitation for one job, as a manager sees them. From the demo account.

How it’s made

I’m the founder, the product owner and the only builder. Every human commit in 50RH’s repos is mine; the rest come from bots. I make the product calls, write the code with AI, and run the operations: deploys, backups, billing, and a checklist of what’s waiting on me.

It runs as three services, each deployed on its own: the marketing site, the app and the API. All three answered on 5 October 2026.

AI writes most of the code. Of the 761 commits on main this year, 604 carry an AI co-author line, as of 4 October 2026. The calls are mine, and they’re dated.

By 5 October 2026, 534 pull requests had merged into 50RH this year: 517 from my account and 17 automated dependency updates. That count starts in 2026. The first version was 626 commits in 2025, mostly in April and May, before I worked in pull requests.

How fast

  1. 29 JulA manager could open a repair job, keep a contractor book and record bids.
  2. 7 AugThe flat-rate bidding plan went live, with real card checkout at $149 a month.
  3. 9 AugSix fixes from a review of the live funnel the day before. Anyone could now try the demo and draft a job free, and pay only to send for bids.
  4. 10 AugA price benchmark from other customers’ sealed bids, shown only once enough bids exist. No manager has seen one yet.
  5. 23 AugAI drafts a job description from the manager’s photos, live in production on the paid plan.
  6. 22 SepThe manager is emailed the moment a job becomes their move.
  7. 23 SepBids get chased automatically, with reminders, a Remind button and a Pass for contractors.
  8. 29 SepClosing an account stops its billing, and old personal data is pruned daily.

How it stays right

In early August, document uploads were marked live, but every upload failed. I found that by using the live app on 3 August 2026 and fixed it in five steps by the next day. Since then, “shipped” means I’ve seen it working live, not that it merged.

  • Every pull request runs the test suite before it can merge, and again after it merges. The latest runs on main, as of 5 October 2026, passed 3,139 tests: 1,865 for the API, 1,209 for the app and 65 for the site.
  • A pull request to save CI minutes would have dropped the test run after merges. I closed it about a minute later. I’d rather raise the $7 overage cap than lose that safety net.
  • Tests fail if the marketing site’s copy says 50RH verifies, vets or guarantees a contractor, or if the unfinished sensor hardware comes back into the main navigation.
  • A contractor badge said “Verified on 50RH”, but nobody had checked anything. I renamed it “Confirmed by vendor” before any property manager had seen it.
  • The app used to say that job photos help contractors bid. Bidding contractors never see the photos, so it doesn’t say that anymore.
  • The database is backed up nightly. Once a month a drill restores the newest backup into a throwaway database and checks it. The drills on 1 September and 1 October 2026 passed.
  • A daily probe checks that the AI feature is switched on in production, because a deploy can silently turn it off. It checks the switch, not the quality of the drafts.
  • Every screenshot of the app, including the one above, comes from the seeded demo account, and capture fails if the seed has drifted.

The call

The analysis said: hard-block any notice to a tenant whose wording matches a fair-housing term list. The first build did exactly that.
I decided: advise, never gate. Every finding is logged, and every notice still goes out.

The block came out 31 minutes after it merged. A notice to a tenant is never withheld over its wording, and the Terms carry the responsibility for what a manager sends. Everyday trade vocabulary is regression-tested so it doesn’t trigger an advisory.