Portfolio productPlayable local-first prototype

Friend CRM

A tongue-in-cheek retro relationship desk with modern AI-aware workflows, local-first data, and privacy-first boundaries.

View Demo Coming SoonView GitHubRead Case Study
Friend CRM People Desk desktop interface.
Hero capture from the portfolio screenshot package generated from the local fake-data prototype.

Product overview

Friend CRM helps one person remember people, promises, context, boundaries, and next moves without turning personal life into sales software.

It treats relationship memory as private, source-backed, user-owned material. The current product is a local browser prototype with fake seeded data, deterministic demo behavior, and development-only AI route shells.

The product joke

A fake bureau for people who care enough to make friendship suspiciously organized.

Early-2000s web satire with hard borders, loud labels, and fake institutional confidence.

A private intelligence desk that knows it is ridiculous and says so out loud.

Cheeky social debt language that makes the tool memorable without shaming the user.

A loud retro interface wrapped around careful, local-first product thinking.

Real boundary

The joke is fake-serious. The privacy boundary is not.

  • No private message scraping.
  • No automated outreach.
  • No hidden scoring.
  • No durable AI-generated memory without user confirmation.
  • User-owned data remains exportable and deletable.

Walkthrough

The prototype is a tour through relationship memory, review, planning, and escape hatches.

Friend CRM desktop People Desk showing the retro app shell, people table, and dossier rail.

People Desk

The main relationship desk: fake-serious chrome, local seeded people, scan-friendly status, and a dossier rail that keeps the joke loud while the table stays usable.

Friend CRM person briefing screen with source-backed memory and next-move context.

Briefing

A pre-meeting brief assembles confirmed memories, open loops, and careful next moves without pretending the machine knows the relationship better than the user.

Friend CRM review panel for proposed memories and open loops.

Review Panel

AI-style extraction stays in a review lane. Suggestions can be edited, accepted, or rejected before anything becomes durable memory.

Friend CRM Plot Board showing relationship next moves grouped by status.

Plot Board

The Plot Board turns social intention into an explicit planning surface: not outreach automation, not pressure, just visible next moves.

Friend CRM Poster Lab with loud fake dossier artwork and retro bureaucracy styling.

Poster Lab

The loudest personality shot: BuddyScan-style fake dossier art that makes the product memorable while clearly labeling the output as decorative, not evidence.

Friend CRM Evidence Locker settings and export/import screen.

Evidence Locker

The safety surface: export, import preview, reset, and local-data controls framed like a bureau archive but written like a responsible product.

Friend CRM mobile person dossier drawer.

Mobile Dossier

On narrow screens, the person rail becomes a drawer so the app stays playable instead of turning into a permanently stacked wall of panels.

Friend CRM mobile Plot Board layout.

Mobile Plot Board

The board keeps its relationship-planning shape on mobile, with the retro desk energy compressed into a touch-friendly layout.

Friend CRM tablet people editor layout.

Tablet Editor

Tablet QA pushed the editing surface into compact profile sections so profile changes stay legible at in-between widths.

AI and privacy

AI is a drafting assistant, not an authority. The database owns facts. AI proposes structure and language. Review is explicit.

Suggestions are source-backed and must be confirmed before they become durable memory. Public demos should run on fake data, and real provider-backed AI is not deployed as a production route yet.

Engineering notes

Built as a local-first React prototype with deterministic fallback behavior.

Vite

React

TypeScript

local browser storage

schema-versioned export/import

deterministic fallback demo behavior

server-side AI boundary for development routes

Vitest

browser/mobile/tablet regression scripts

synthetic fake-data trial harness

Design evolution

From sterile private desk to retro social bureau.

Early Friend CRM was quiet and utilitarian: a private desk for notes, memories, and next moves. Useful, but too close to a productivity dashboard.

The retro bureau direction gave the product a point of view: the frame can be absurd, the product can be careful, and the user can enjoy the contradiction without losing trust in the serious controls.

Postmortem

Personality works only because the product stays restrained where it matters.

01

Humor can reduce sterility, but trust copy must stay plain.

02

Review and confirmation matter more than raw AI generation.

03

Local-first is a strong prototype default for personal data.

04

Browser QA catches layout issues unit tests miss.

05

The product works because it balances personality and restraint.

Current status

Playable local-first prototype. Not production-hosted for real private data yet.

Fake seeded data.

Deterministic demo behavior.

Mobile, tablet, and browser QA coverage.

Development AI route shells with server-side boundaries.

Latest known commit: 6bc615f.

Hosted demo URL: not available yet.

Tags

Product designAI UXPrivacy-first softwareLocal-first prototypeReactTypeScriptBrowser QARetro interface