A private operations workspace that turns website conversations and enquiries into an organized pipeline for contacts, follow-up, proposals, invoices, appointments, and outbound work — now with per-channel AI assistants that can draft or send email replies under explicit safety rules.
Portfolio Admin is a full-stack admin portal for the portfolio site's lead intake and client operations. It connects chat, forms, contacts, email, proposals, invoicing, scheduling, AI assistants, integrations, notifications, and job discovery through a single authenticated workspace.
Website enquiries arrived through different channels and needed to be reconciled manually. Conversation history, contact details, follow-up, documents, appointments, and outbound opportunities could easily become separate threads with no shared operational view — and email in particular sat unanswered for hours because every reply required a person at a keyboard.
Built a private Next.js App Router portal over Supabase Auth, Postgres, RLS, and Realtime. Legacy widget records and newer multi-channel conversations are normalized in the UI, while server routes handle email, AI, PDFs, calendar synchronization, and protected automation. AI was then split into independent per-channel assistants so the email assistant and the website chat assistant can carry different models, prompts, knowledge, and automation limits.
A connected operating surface for the complete journey: capture a lead, understand the conversation, maintain the contact record, approve or send a reply, schedule the next step, prepare a proposal or invoice, and keep the human in control. Automation is opt-in per assistant, bounded by category, confidence, and takeover rules, and every connected service is visible from one Integrations screen.
The product is organized around the moments that usually create context switching for a solo operator or small team.
A visitor submits the website chat or a contact form, or an admin adds or imports a contact.
The CRM resolves the person against existing email or phone data and keeps the enquiry linked to the contact.
Messages, form details, scheduling requests, and notifications appear in the appropriate operational workspace, and the assistant that owns the channel classifies and summarizes the thread.
Depending on that assistant's automation mode, an eligible email either becomes an AI draft waiting for approval or is sent automatically after every safety check passes.
The admin can approve, edit, regenerate, or reject the draft, reply manually, take over from automation, or move the conversation toward a booked appointment.
A connected service catalog supports proposal and invoice line items, with editable records and PDF output.
Notifications, realtime updates, Google Calendar synchronization, and the separate job-hunt pipeline keep follow-up visible.
Everything below is grounded in the current CRM source. Filter by area or expand everything; each card shows the implemented behavior and the boundaries that remain part of the active build.
No capabilities in this group.
The product is implemented as a typed App Router application with server and client responsibilities kept explicit. The browser handles interactive workspace state, while authenticated route handlers, database policies, and server-only integration paths protect the data and provider boundaries.
current_user_access function into an active role, system-role flags, and granular permission keys.services table is intentionally referenced by both proposals and invoices, avoiding two competing catalogs for the same business offering.chat_messages/chat_texts widget records alongside native conversations/messages records and normalizes them into one rendered thread model.@react-pdf/renderer templates, keeping document layout separate from browser-only controls.The CRM's value is in the handoffs: the same contact can appear in a form review, a multi-channel thread, an AI draft awaiting approval, a proposal, an invoice, a calendar appointment, and a notification without losing the surrounding context.
The feature surface is broad and the current source contains the working routes, components, APIs, migrations, and integration paths described above. The product is already live and remains an active build while its final iteration, safe screenshots, reliability work, and ongoing improvements continue.
Authenticated CRM navigation, contact and conversation workflows, the multi-assistant AI architecture with per-channel email automation and conversation intelligence, the in-inbox draft approval flow, the Integrations surface, proposal and invoice documents, scheduling, notifications, job discovery, and the supporting Supabase data model are represented in the current checkout.
Active product work includes the Telnyx SMS/calling and Stripe payment integrations that are currently marked not configured, continued permission and company-settings refinement, redacted visual documentation, reliability improvements, and the polish needed as the live system evolves.
The CRM is live in its current production environment and connected to the portfolio operations workflow. The case study keeps private credentials and internal deployment details out of the public page while documenting the active implementation and its deliberate product boundaries.
Selected CRM and portfolio screenshots from the implemented surfaces. Filter by area, then click any image to enlarge it.




























No screenshots in this area.
Leave a public comment — questions, feedback, or your own experience with a similar system.
I build private CRM and operations systems that keep lead context, automation, and human decisions connected.
Work With Me →
Loading comments…