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 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 ↗