I’m an operator who builds AI systems and then puts them to work inside a real business, starting with my own.
Everything below is live. Every number was checked on October 6, 2026.
I connected my CRM to AI so I could stop clicking
The problem. Follow Up Boss is the CRM most real estate teams live in. Adding a note, moving a deal, tagging a contact. Each one is a few clicks and a page load, fifty times a day. AI assistants had no way in.
What I built. An open-source MCP server that gives any AI assistant the full Follow Up Boss API. 160 tools, plus about and help. Safe Mode is on by default and hides the delete tools. Claude Desktop users download one .mcpb file, open it, paste their API key, and they’re running. No terminal.
The hard part wasn’t the endpoints. It was the tool descriptions. “Update a person” and “merge two people” and “check for a duplicate” look alike to a model. I tuned each description against real use until Claude picked the right one.
The proof.
- 31 stars and 22 forks on GitHub. Current release v1.5.3 (September 24, 2026).
- Listed on the Official MCP Registry as
com.neuhausre/followupboss. - Merged pull requests from three outside developers, including Safe Mode hardening, proper MCP error flags, and duplicate-email detection.
- I run my brokerage’s CRM through it every day.
GitHub · Landing page · Build notes
I put the Austin MLS inside Claude and ChatGPT
The problem. More buyers start their home search in an AI chat now. Our listings weren’t there. And a question asked in a chat never turned into a lead.
What I built. A hosted MCP server at mls.neuhausre.com/mcp. Paste one URL as a custom connector in Claude, ChatGPT, Perplexity, Cursor, or Gemini CLI. Sign-in is OAuth 2.1 with dynamic client registration and PKCE, the same handshake the big AI clients expect.
The first time someone connects, the server creates a contact in Follow Up Boss. So the AI conversation becomes the intake form. Anyone gets live active listings for free. Clients with a signed buyer agreement unlock sold comps and market stats (MLS rules keep sold data behind that agreement, and the server enforces it). Rate limits run at both nginx and Redis. It reads from the same Postgres database and Redis cache as the search on neuhausre.com. One dataset, two front doors.
The proof.
- Listed on the Official MCP Registry as
com.neuhausre/austin-mls. - I’ve packaged it for OpenAI’s ChatGPT app directory. It has not been submitted yet.
I gave AI assistants free access to Austin public records
The problem. Every client question meant a different government website. Flood zone, that’s FEMA. Taxes, that’s the appraisal district. Permits, that’s the city. Three counties, and each one publishes data its own way.
What I built. A free, open-source MCP server (Apache-2.0) with 43 tools. It covers three county appraisal districts, City of Austin open data, FEMA flood maps, Lake Travis levels, real-time CapMetro buses, and the city code text. One tool, austin_property_360, pulls all of it for a single address in one call.
It installs with one command and needs no API keys. That was a hard rule. Strangers run this code on their own machines, so no credential of mine can ever live in the repo. The work that mattered was normalizing every county’s response into one clean shape.
Then I pulled the reusable parts into a template with a written standard, and started Dallas, San Antonio, and Houston from it.
The proof.
- Version 0.18.0, 43 tools.
- CI tests on Node 20 and 22. A separate contract test hits the live government sources every day, and it passed every run this past week.
GitHub · City template · Build notes
I built a paid investment analyzer for short-term rental buyers
The problem. Most Airbnb calculators run on national averages. The good data tools cost more than a small investor wants to pay.
What I built. StaySTRA. Type in an address and get projected revenue, nightly rate, occupancy, cap rate, cash-on-cash return, DSCR, and more than 20 other metrics, with the comparable rentals behind them. Pro is $7 a month or $59 a year, billed through Stripe.
Paying members create their own API key from their account page. 50 calls a day. The key dies with the subscription, and an hourly job revokes keys for anyone who stopped paying. Nobody has to issue a key by hand.
The proof.
- 13,374 sessions in all of 2025. 78,328 sessions from January 1 through October 5, 2026 (Google Analytics).
Try the analyzer · Build notes
I run my brokerage on systems I built
The problem. A standard listing feed shows buyers less than they want. Keeping hundreds of neighborhood pages current by hand doesn’t happen. And leads leak between the website and the CRM.
What I built. Neuhaus Realty Group runs on a custom WordPress theme and plugin, plus a property search backed by our own Postgres database that syncs with the MLS. The same data feeds a rate-limited public API, which is what powers the Austin MCP server above. Content goes through drafting, fact-checking, and SEO steps before it publishes. Every lead form and connector routes into Follow Up Boss on its own.
The proof.
- 883 published posts and 273 pages.
- 17,007 sessions in all of 2025. 96,880 sessions from January 1 through October 5, 2026 (Google Analytics).
It all runs on two servers I manage
Two production Linux servers run 28 containers and 119 scheduled jobs between them (counted October 6, 2026). Traefik and nginx in front, Cloudflare at the edge, Postgres and Redis underneath, daily backups. Most of the code was pair-programmed with Claude. I make the architecture calls, review what ships, and get the page when something breaks.
That’s the work I want to do on a team. Find the friction people put up with every day, then wire AI into the tools they already use.
Email me at [email protected].