See what’s happening across all your listings at a glance. Know which sellers completed tasks today, who’s falling behind, and what needs your attention — without opening each listing.
Agent Photo Documentation
Coming Soon
Document walkthroughs, capture condition photos, and share before-and-after shots with your sellers directly through the app.
Notifications & Reminders
Coming Soon
Task reminders, overdue alerts, and showing countdowns delivered via push notifications and email. Stay on top of deadlines without opening the app.
Drag-and-Drop Task Management
Coming Soon
Reorder tasks by dragging. Move items on the calendar or Gantt chart and watch downstream dates adjust automatically.
Contractor Coordination
Coming Soon
Agent-approved vendor lists right in the task details. Sellers request quotes, book contractors, and track spending — all in one place.
Your Agent Plan™ rebrand, agent branding, master calendar, CRM contacts, and sidebar navigation
BrandingFeatureUXBug FixMobile
Your Agent Plan™ is the new name. The rebrand from SellSequence touched every user-facing string, page title, meta tag, storage key, and email template across the app. The domain youragentplan.com is live, with sellsequence.com redirecting automatically.
Agent branding is fully live. Agents set a primary brand color and optional accent on their profile page, and those colors flow through the entire seller experience via CSS custom properties — sidebar, buttons, progress rings, nav highlights, and badges all adapt automatically. Headshots and brokerage logos upload with real-time preview, and an auto-contrast algorithm ensures text remains readable on light brand colors. The old horizontal brand bar was replaced with a collapsible sidebar that shows the agent’s photo, name, brokerage, tagline, designations, and social links.
The sidebar now serves as the primary desktop navigation for all agent pages. It displays all active listings with color-coded dots and progress counts, quick actions for the current listing (copy seller link, copy viewer link, message seller, recalculate plan), and nav links for Dashboard, Plan, Calendar, Contacts, and Settings. It persists across all agent pages with consistent state. Listing progress badges show “On track,” overdue counts, or status labels. The sidebar collapses to a 56px icon rail.
A master calendar gives agents a cross-listing view of all events and deadlines. Four view modes — Agenda, Month, Week, and Day — show events color-coded by listing. Agents can create, edit, and delete events (showings, open houses, inspections, appraisals, closings, walkthroughs, photo shoots, meetings) with optional seller notifications. Toggling a listing pill overlays that listing’s task deadlines on the calendar. Listing days auto-generate from each listing’s target date. A seller confirmation flow lets agents mark events as “requires confirmation” and sellers respond via a link-based confirm/request-change UI. A response inbox banner surfaces unread seller replies.
Contact management replaced the old client list with a full-featured CRM. Contacts have types (Client, Vendor, Professional, Other) with client-specific statuses (Lead, Active Seller, Past Client). Each contact card expands inline to show notes, documents, reminders, and metadata. Reminders support multiple per contact (replaced the single-reminder system). Documents are capped at 4.5 MB / 25 per contact. Addresses use structured fields (street, city, state, zip) instead of a single text field. Vendor contacts surface as recommendations on matching plan tasks. Contacts now live at their own /agent/contacts page with dedicated navigation.
Mobile inventory got a layout fix — cards stack properly, the sort dropdown works reliably, and select mode is cleaner.
An SMS opt-in consent page was added for Twilio verification compliance.
Numerous bug fixes shipped: plan generation no longer crashes for agent-created listings, questionnaire completion no longer crashes the plan, scrolling works on all agent pages (6 pages were frozen by a layout overflow-hidden), and calendar week/day views fill full width on desktop.
Builder note: The branding system uses CSS custom properties (--agent-primary, --agent-accent, etc.) injected by a BrandStyleInjector component so colors cascade without prop drilling. The sidebar uses a SidebarProvider context for shared state (listings, current listing, progress data) across all agent pages. The calendar stores events in a new agent_events table with Postgres-level constraints. Contact types use a discriminated union pattern — clients have statuses and listing links, vendors have specialties, professionals have roles. The rebrand required updating 40+ files but zero API schema changes since all identifiers were UUIDs/tokens, not brand names.
Terms we used
CSS custom properties (branding)Internal
Agent brand colors are set as CSS variables on the page root (--agent-primary, --agent-accent, --agent-text, etc.) so all components inherit colors without props. A BrandStyleInjector component computes derived colors (hover states, overlays, text contrast) from the base brand color.
Seller confirmation flowFeature
Events marked “requires confirmation” generate a unique link sent to the seller. The seller sees event details and can confirm or request a change with a message. The agent sees responses in an inbox banner on the calendar.
Contact type systemFeature
Each contact is categorized as Client, Vendor, Professional, or Other. Clients have an additional status (Lead, Active Seller, Past Client). Vendor contacts are automatically recommended when their specialty matches a plan task category.
Admin auth hardening, bottom navigation, form resilience, and extraction review polish
SecurityFeatureBug FixUXMobile
Three admin authentication security findings from the post-BetterAuth audit were addressed. Admin login is now rate-limited to 5 attempts per IP per 15 minutes. Password comparison switched from a simple string check to crypto.timingSafeEqual(), preventing timing-based attacks. And the signing secret no longer falls back to ADMIN_PASSWORD — it requires a dedicated ADMIN_SESSION_SECRET environment variable.
The top navigation tabs on every seller and agent page were replaced with a fixed bottom navigation bar — a single shared BottomNav component with three variants (seller, agent-listing, agent-dashboard). Each variant surfaces the most relevant tabs for that context, with a center floating action button for room scanning that navigates to inventory and auto-triggers the camera. Secondary actions like Documents, Details, Copy Link, and Recalculate live in a "More" menu. An overdue task badge appears on the Plan tab when tasks are past due.
All form inputs across onboarding, signup, login, and admin pages gained resilience for headless browser automation. The root cause: React controlled inputs without name attributes fail silently when tools like Playwright set DOM values without triggering onChange — React state stays empty, validation fails, and the API never gets called. The fix adds name attributes to all inputs with a FormData fallback in submit handlers.
The listing extraction flow got a UX polish pass. After pasting and extracting listing details, the results page now shows a clear “Review Extracted Details” title with a “Click any value to correct it before continuing” subtitle, replacing the previous state where the page still said “Paste from Existing Source” after extraction completed.
Builder note: The admin auth changes came with 11 new tests covering rate limiting, timing-safe comparison, and signing secret validation. The form resilience fix included 10 new tests, including one that reproduces the exact headless browser scenario (setting DOM values without onChange). Migration 019 also landed in this batch — converting agent_profiles.id from uuid to text for BetterAuth nanoid compatibility and recreating 15 RLS policies. BottomNav uses route-based variant detection so each page doesn’t need to pass its own config. Lucide React was added for consistent iconography.
Terms we used
Timing-safe comparisonPractice
Using crypto.timingSafeEqual() instead of === for password checks. A naive string comparison returns faster on mismatches at earlier positions, leaking information about which characters are correct. Timing-safe comparison always takes the same amount of time regardless of where the mismatch occurs.
FormData fallbackPractice
Reading form values from the DOM (via new FormData(form)) as a fallback when React state is empty. Defends against tools that set input values without triggering React’s synthetic onChange event.
Bottom navigation barFeature
A fixed bar at the bottom of the screen with role-specific tabs, a center FAB for quick actions, and a More menu for secondary navigation. Replaces the previous inline top nav tabs on all pages.
Room album management and Donate tag
FeatureUX
Room scan albums gained full management controls. You can now delete entire rooms (photos are removed from storage, items stay in inventory), rename rooms inline with a tap-to-edit heading (linked inventory items update automatically), merge duplicate rooms by renaming one to match another (photos combine, items reassign), and move individual photos between rooms via a context menu on each thumbnail. Empty rooms with no photos and no items are automatically hidden from the gallery. Both seller and agent pages have identical functionality.
Inventory items gained a fifth tag: Donate. It appears everywhere tags do — summary bar, filter pills, item cards, room scan review, bulk actions, Add/Edit modal, and CSV export. Donate items are excluded from Facebook Marketplace export (same as Keep, Storage, and Staging). The tag has no sell workflow — no asking price, marketplace, or listing status. It’s a pure organizational tag for items sellers want to give away.
Builder note: Room management operations (delete, merge, move, rename) are extracted into shared helpers in room-scan-helpers.ts so both the seller and agent API routes use identical logic. The Donate tag required touching 6 files but zero API route changes — the Zod schema, type union, and component configs were the only touchpoints since CSV export passes tags through as-is and Facebook export already filters to sell-only.
Terms we used
Room mergeFeature
When a room is renamed to match an existing room (case-insensitive), a merge prompt appears. Confirming combines all photos into the target room and reassigns linked inventory items. The source room is deleted.
Auto-cleanupFeature
Rooms with zero photos AND zero linked inventory items are automatically filtered out of the gallery display. This prevents empty placeholder rooms from cluttering the view after photos are moved or deleted.
Room scan photo albums, seller self-signup, bulk inventory actions, and FB Marketplace export
FeatureUXBug Fix
Room scanning got a major upgrade. Photos now upload to Supabase Storage instead of being stored as base64 blobs, and every scan goes through a review step where you can rename items, tag them (Sell, Keep, Storage, Staging), remove false positives, and add anything the AI missed — all before anything hits your inventory. A room gallery shows thumbnail cards for each scanned room with item counts and expandable detail panels.
On top of that, room scans now work as proper photo albums. Tapping "Scan Room" when rooms already exist opens a picker — choose an existing room to add another angle, or start a new one. When adding to an existing room, the AI deduplicates against items already identified in that room so you don't get repeats. Individual photos can be deleted from the expanded gallery with a single tap (with confirmation), and the system handles primary photo promotion automatically — delete the main photo and the first additional takes its place.
Sellers can now create their own accounts and start a listing without an agent. A free tier gives sellers one listing with the full AI-powered questionnaire, plan generation, and inventory tools. Dual-role support means the same email can have both an agent profile and a seller profile — no conflicts.
Inventory management gained bulk actions. A selection mode adds checkboxes to every item with Select All / Deselect All. A sticky bottom bar lets you re-tag or delete selected items in one operation. The bulk endpoint processes up to 500 items in a single atomic write.
A new Facebook Marketplace export generates an XLSX file matching Facebook's exact bulk upload template — four header rows, mapped condition values, capped at 50 items per Facebook's limit. The existing CSV export is still available from the same dropdown.
Plan regeneration no longer gets stuck. Previously, if regeneration failed, the listing status reverted to "interview" instead of "active," locking sellers out of their existing plan. The error path now correctly distinguishes first-time generation from regeneration.
Builder note: Room scan error handling was also overhauled — every failure point (upload, room scan creation, vision API, review batch save) now surfaces the actual server error message to the user instead of silently returning to idle. Server-side logs use prefixed tags ([scan], [add-angle], [scan-room]) for easier debugging. The seller self-signup architecture uses dual profile tables (agent_profiles + seller_profiles) rather than a role column, which keeps the existing agent auth flow completely untouched.
Terms we used
Room scan reviewFeature
A full-screen overlay where AI-detected items are presented as editable cards. Each card has a name field, tag pills, and a remove button. Users review, correct, and tag items before they enter the inventory — nothing is auto-committed.
Photo albumFeature
Each room scan stores a primary photo and an array of additional photo URLs. Deleting the primary promotes the first additional. If all photos are deleted, the room scan persists with a placeholder — items remain in inventory.
Dual-role architectureInternal
A user can be both an agent and a seller, determined by which profile tables they have rows in (agent_profiles, seller_profiles). No role column on the user table — role is inferred from profile existence.
4-way plan view, budget input fixes, and subscription resilience
FeatureUXBug Fix
The plan view now has a single 4-way toggle — Category, Timeline, Calendar, and Gantt — built directly into the plan component. Category view groups tasks by epic with emoji icons and colored progress bars. Timeline keeps the existing urgency-based layout (Next 72h, 7 Days, Upcoming). Calendar shows a month grid with category-colored task pills, listing day highlighting, and seller-specific features like day notes and blocked periods when available. Gantt renders horizontal bars grouped by category with a today line and listing day marker.
The old page-level toggles on both the seller and agent plan pages have been removed. The new toggle lives inside PlanView itself, so both roles get consistent access to all four views. PlanView was refactored from a 1,300-line monolith into a slim coordinator that delegates to nine focused sub-components under plan-views/. Expand All and Collapse All now control section headers (epic groups, time buckets) without expanding individual task detail panels.
A compact progress hero replaces the previous large ring layout — a 40px ring with inline stats (done, scheduled, overdue) and a days-left countdown, all in a single line.
Budget inputs now handle dollar signs, decimal values, and alignment correctly. Clicking an AI-generated estimate makes it directly editable inline, and the dollar sign stays visually anchored regardless of the number width.
On the infrastructure side, Stripe checkout now recovers gracefully when a stored customer ID is stale or deleted — it creates a fresh Stripe customer and retries instead of failing. Origin verification gained a VERCEL_URL fallback for environments where SITE_URL isn't set, and the tsconfig was updated to exclude scripts/ from Vercel preview builds that were hitting out-of-memory errors.
Builder note: PlanView went from 1,333 lines to ~400 by extracting TaskRow, TaskExpandedDetail, CategoryView, TimelineView, PlanCalendarView, GanttView, CompactProgressHero, and ViewToggleBar into app/components/plan-views/. Shared state flows through a single SharedViewProps bundle. The Stripe customer recovery pattern uses a try-create-retry loop so existing subscriptions aren't affected.
Terms we used
Plan view coordinatorInternal
PlanView.tsx now acts as a coordinator — it owns all shared state (expanded tasks, collapsed sections, editing callbacks) and delegates rendering to whichever sub-view is active. Each view receives a SharedViewProps bundle.
Category viewFeature
Groups tasks by their epic (Painting, Flooring, Landscaping, etc.) with emoji icons, colored left borders, and per-category progress bars. Designed for sellers who think in terms of what needs to happen, not when.
Agent Pro subscription and paste-to-parse listing intake (beta)
Feature
The Agent Pro subscription plan is live at $29.99/mo. Agents can subscribe through a secure Stripe checkout, and manage or cancel their subscription from within the app. Unlimited listings, AI-powered questionnaires, preferred vendors, branded seller views, and all exports are included.
A new paste-to-parse flow (beta) lets agents skip the questionnaire by pasting raw listing text — from Redfin, MLS, or their own notes — and having it parsed into structured property details automatically. Each extracted field shows a confidence score so you know what to review before generating the plan.
Builder note: Paste-to-parse uses AI extraction with field-level confidence scoring. It's in beta — we're refining accuracy based on the variety of listing formats agents actually paste in.
Terms we used
Paste-to-parseFeature
Agents paste raw listing text and AI extracts property details into structured questionnaire fields. Confidence scores show which extractions need review.
Task ownership, role-based permissions, and multi-day scheduling
FeatureUXSecurity
Tasks now know who created them. Every task carries a created_by_role field — AI-generated, seller-created, or agent-created — which feeds a new permission system that controls who can edit what. Agents can edit their own tasks and AI tasks but can’t touch seller-created tasks. Sellers can only edit tasks they created themselves. Both roles can mark any task done and add notes. Destructive actions like dismiss, delete, and plan regeneration now require explicit confirmation with a dialog explaining the impact.
Seller privacy shipped alongside ownership. New tasks created by sellers default to private — invisible to the agent. A lock/unlock toggle lets sellers share individual tasks when they’re ready. The agent sees a count of how many private tasks exist but can’t see their contents.
Task durations got a complete rework. Tasks can now span multiple days with an explicit start date and end date, and the duration is editable inline — click the day count, type a new number, and the end date recalculates. Date ranges display as “Jun 3 - Jun 5” instead of a single deadline.
Custom task creation became epic-aware: new tasks automatically inherit the category of the section they’re added to, so a task added under “Painting” gets filed under Painting without manual selection. Task titles and descriptions support inline editing for custom tasks.
Under the hood, the scheduling engine now auto-recalculates when tasks are dismissed or completed. Completing a task clears dependency warnings on everything downstream. And four notification hooks — plan recalculated, plan regenerated, task dismissed, task unblocked — are wired into the API routes as placeholders, ready to be connected to transactional email.
Builder note: The permission matrix is shared between API routes and the frontend via a single permissions.ts utility, so the UI disables controls for the same actions the API would reject. Twelve Linear issues closed in one day.
Terms we used
Role-based permission matrixFeature
A lookup table that determines what each role (seller, agent) can do to each task based on who created it. Enforced at both the API layer (returns 403) and the UI layer (hides or disables controls).
Notification hooksInternal
Placeholder async functions that fire on plan-changing events. They currently log to console with context about who triggered the event and who should be notified. Designed to be swapped for transactional email later without changing the call sites.
Budget overhaul, agent parity, and editing capabilities
FeatureUX
Budgets got a ground-up rework. Sellers and agents can now override any AI-generated cost estimate with their own number, hide irrelevant line items (collapsed into a "Hidden items" section with one-click restore), and add fully custom expenses. Cost categories have been consolidated to job-level pricing — one line for "flooring" instead of separate entries for demo, materials, and labor. Both roles now have a regenerate button to re-run the AI estimate when the plan changes.
The agent plan page is no longer read-only. Agents have full interactive access to the plan, budget, inventory, and documents — the same capabilities sellers have always had. The agent dashboard now includes a completion ring, phase-by-phase breakdown, and a feed of recently completed tasks.
Task management picked up several new capabilities: custom task creation with inline delete, click-to-edit for task titles and descriptions (Enter saves, Escape cancels), and soft dependency blocking that warns when completing a task out of order but lets agents override with "Mark Done Anyway."
The viewer share link is now surfaced directly in the seller footer and the agent header with a copy button, and the changelog is linked in navigation for both roles. Sellers can now edit their property details on a dedicated details page. And a new AI feature extracts actionable tasks from agent notes — write a note about what needs doing, and Your Agent Plan turns it into tasks on the plan.
Builder note: Biggest theme: agent accounts are now first-class citizens with the same capabilities as sellers. CRUD completeness audited across all entities and both roles.
Terms we used
Soft dependency blockingFeature
When a task has unfinished prerequisites, a warning modal explains which dependencies are incomplete. The user can dismiss the warning and mark the task done anyway — the dependency is informational, not a hard gate.
Notes-to-tasks extractionFeature
AI reads free-text agent notes and extracts actionable items as new tasks on the listing plan. Lets agents capture ideas quickly in prose and convert them to structured work later.
Agents can now resend plan links to sellers
FeatureUX
It happens — sellers lose the link. Agents can now resend it without any friction.
For listings where the seller is actively completing the questionnaire, the Copy Link button now appears so agents can forward the link again at any point. For active listing plans, a Text button is available alongside the existing Copy Link, pre-filling an SMS with the plan link so agents can send it in one tap.
Builder note: Copy Link extended to all in-progress listing statuses. Text button added to active plans with a pre-filled message template.
Password recovery flow, nav polish, and past-date warning
FeatureUXBug Fix
Agents can now recover access to their accounts without contacting support. A "Forgot password?" link on the login page leads to a dedicated page where agents enter their email, receive a reset link, set a new password, and get redirected to login. The form never reveals whether an email address has an account.
Two smaller polish items also shipped: the Changelog is now linked directly in the homepage nav bar, and the task creation modal now shows an inline amber warning when a due date in the past is selected — without blocking submission.
Builder note: Password recovery uses the built-in auth provider's email flow — no external email service needed.
Terms we used
Account enumerationPractice
A security anti-pattern where a form reveals whether an email address has an account (e.g. 'No account found'). Avoided here by always showing the same success message regardless of whether the email exists.
Blueprint Glass rebrand and mobile responsiveness
BrandingMobileUX
Your Agent Plan™ (then SellSequence) got a new visual identity: Blueprint Glass. The original amber and stone palette was replaced across the app with a professional blue-toned system — deep navy text, soft blue-white backgrounds, and an electric blue accent.
Mobile responsiveness received a comprehensive pass on seller-facing pages: touch targets meet accessibility minimums, grid layouts collapse properly on small screens, and the plan, budget, and inventory pages are fully usable on phones.
Builder note: Seller-facing pages were prioritized for mobile since those are shared directly with homeowners. Agent-side mobile improvements are in progress.
Terms we used
Blueprint GlassPractice
Your Agent Plan's design system — a blue-toned palette named for the intersection of architectural blueprints and modern glass transparency.
Code audit, bug fixes, and feature scoping
Bug FixUXFeature
Full code audit of the Your Agent Plan codebase covering export functionality, onboarding flow, and interview experience. Identified and resolved issues with plan generation stability and scheduling accuracy.
Feature scoping completed for calendar integration, communications infrastructure, and mobile optimization — establishing the roadmap for the next development cycle.
Brand identity exploration began, evaluating multiple design directions before selecting the Blueprint Glass palette.
Builder note: Scheduling improvements moved to a more reliable approach that better handles overlapping tasks and tight timelines.
Your Agent Plan v2 — complete rebuild
FeatureUXPerformance
Major rebuild transforming the original prototype into Your Agent Plan v2 (then SellSequence). The app was renamed, the domain purchased, and the core architecture rebuilt.
New capabilities include: AI-powered property questionnaire that generates a dependency-aware listing preparation plan, task completion tracking with progress visualization, photo inventory with room scanning, vendor management, shareable read-only viewer links for clients, custom task creation, PDF and calendar export, and a demo listing on agent signup.
The scheduling engine now pins milestones backward from the listing date while scheduling preparation work forward with daily capacity limits — ensuring realistic timelines that don't overload any single week.
Builder note: Key design decisions: show 'Complete by' deadlines instead of date ranges, support tasks without dates in an 'Unscheduled' section, and generate a demo listing on signup so agents can explore the product immediately.
Terms we used
Property questionnaireTool
An interview that asks homeowners about their property's condition, scope of work, timeline, and availability — then generates a personalized preparation plan.
Viewer linkFeature
A read-only shareable URL showing task progress with the property nickname. Displays task titles and statuses only — no personal details or budget information.
Initial concept and competitive research
Feature
Your Agent Plan began with a core insight: preparing a house for sale is a project with real task dependencies and budgeting, but most homeowners just get a vague checklist from their agent.
Competitive landscape research confirmed that no existing tool combines a situational interview, dependency-aware task scheduling backward from a listing date, and localized budget estimates into a single product for homeowners preparing to sell.
Builder note: Evaluated existing tools across home management, renovation visualization, and construction project management categories. The gap: nobody interviews a homeowner about their specific situation and then generates a scheduled, budgeted plan working backward from their listing date.