Hosted CRM for small businesses and sellers

Reo

A live web CRM built around customers, conversations, planned follow-ups and deals.

Reo's Today screen showing follow-up groups and due-today tasks in the demo company.
Reo's Today workspace. Real product capture with fictional accounts and follow-ups. View full size: Reo screenshot

The problem

Small sales teams need a place to keep accounts, log what happened, and always know the next follow-up, without enterprise CRM weight.

My role

Product owner and builder. I defined the workflow, made the scope and release calls, and built it with AI coding tools and agents.

Spotted
A seller without a CRM needs four answers at a glance: which accounts are being worked, what those companies are worth, what business is priced, and what's due today. Those questions became the Dashboard.
Decided
Keep the CRM close to how selling actually moves. I set the account and deal stages and dropped a proposed Nurture stage, accepted fast manual activity logging for version one instead of waiting on email detection, and kept company revenue separate from deal value so each total means one thing.
Built
Took it from a single-seller local prototype to a hosted product at reocrm.com, working with AI coding tools and agents. Each release passed a written checklist and acceptance tests with synthetic users and companies before it went live.
Learned
Two separate ways to plan work, follow-ups and activities, gave sellers two competing paths for the same job. I merged them into one flow: plan it, complete it with what actually happened, and schedule the next step in the same save.

What changed

Documented changes to the product, not measured customer results.

  1. Before
    A local, single-seller app on one Mac.
    Now
    A hosted CRM at reocrm.com that a team can share, with Owner and Member roles and tenant isolation checked twice.
  2. Before
    Planned follow-ups and logged activities were separate actions.
    Now
    One save closes the plan, records the real outcome and schedules the next activity. Undo reopens the plan.
  3. Before
    Joining a workspace needed hands-on setup.
    Now
    Guided onboarding: people request a new workspace or ask to join their company, an Owner approves, and email notices follow.

What it does today

  • Accounts and contacts with shared activity history
  • Follow-ups and a Today view that separates overdue, due and upcoming work
  • Opportunities with pricing history, and a Dashboard whose totals open the records behind them
  • Organization roles (Owner and Member) and audited assignment controls
  • Workspace onboarding, company join requests, Owner approval and transactional email

Decisions and tradeoffs

  1. Tenant isolation is enforced twice: in the HTTP layer (identity, membership, role, origin and CSRF checks) and again by database Row Level Security, so one mistake cannot become a cross-customer leak.
  2. Releases are gated by a written launch checklist. Acceptance runs against synthetic users and companies, never real customer data.
  3. Each feature has a progress document recording what was verified and what remains.

Scope & limits

  • Spreadsheet import, attachments, research and mapping on the hosted product
  • Migration of earlier local records

How it was built

I build with a range of AI coding tools and agents, then test the result against the workflow it is meant to improve. The stack is listed for reference.

  • React
  • TypeScript
  • Cloudflare Workers
  • Supabase Auth
  • PostgreSQL with RLS
  • Resend (email)

Source: the project's own README and documentation, checked October 21, 2026.