Skip to content
RH★RYAN
HANGRALIMDEVELOPER / BALI, ID

WEB / OPERATIONS

Bobby CRM

A property operations workspace that brings Bobby’s leads, conversations, viewings, and tasks into one place, with team actions sent back to the agent.

Live internal application

The control room for real work.
THE ROLE
Full-stack Developer · Sonigo
THE WHEN
Nov 2026 — Present
BUILT WITH
FastAPIPostgreSQLJavaScriptAgent IntegrationDocker

A workspace for the team behind the agent

Bobby CRM gives a property operations team a shared place to work with Bobby, the assistant handling day-to-day lettings workflows. It brings leads, conversation history, viewing schedules, outreach approvals, listings, and cases into a browser-based workspace.

The project grew from a static interface into a deployed application with a FastAPI backend, PostgreSQL storage, individual team accounts, and role-based access.

Connecting the interface to real work

The integration works in both directions. Bobby pushes changed records and activity updates to the CRM. Team actions create commands that Bobby claims, runs through its existing tools, and reports back as completed, refused, or failed. Updated records then flow back to the interface.

This supports actions such as changing a lead’s stage, adding a case note, updating a viewing slot, and approving an outreach draft. The command queue includes claim tracking, retry limits, and result reporting so a pending request has an observable lifecycle.

Bobby initiates the connections from its own environment. The CRM can exchange records and commands without requiring an inbound connection to the agent’s computer.

Beyond the agent dashboard

The workspace also connects property and room records with GoHighLevel maintenance tickets and viewing calendars. A knowledge base and editable message templates help the team maintain the information Bobby uses.

Rent tracking and reconciliation are being explored through demo workflows and a TrueLayer sandbox integration. These remain distinct from the live agent and property operations features.

Engineering decisions

The frontend uses plain JavaScript modules with shared UI components. The backend uses SQLAlchemy and Alembic for persistence and migrations, with Docker deployment behind Caddy.

The central challenge is keeping a person’s action, the agent’s execution, and the displayed record in agreement. The interface reports the command’s actual result, while the backend enforces team roles and tracks requests. Notion remains a read-only mirror as the CRM takes over the team’s operational workflow.

CASE FILE / 02THAT'S THE STORY.

LET'S BUILD THE NEXT ONE ↗
UP NEXT / CASE FILE 03

Luna

A little less scroll. A little more life.

← THE COMPLETE LINEUPBACK TO BASE ↑
YOU'VE GOT A DIRECT LINE.

RYAN'S GUIDE

The inside story on the work.

AI PORTFOLIO GUIDEASK AWAY
THIS IS WHERE THE CONVERSATION STARTS.
Ryan's guide

Hey! I'm Ryan's AI portfolio guide. Want the story behind a project, his background, or what he builds? You're in the right place.

PICK A CONVERSATION STARTER

ENTER: SEND SHIFT + ENTER: NEW LINE

AI guide, not Ryan. Messages go to OpenRouter.
Have something personal to discuss? Email Ryan ↗