Roadmap

Backlog
45
* Be able to add projected value to contact
Disable user login switch
- As a biz owner, I would like to prevent old employees from having access to our contacts/schedule/tenant if they get fired.
- Toggle switch on each user on the user edit page. Add a datagrid header for "Active" that shows whether the user's login is enabled.
Allow logins to persist for more than 1 day
Landing Page
Tenant backup/restore staff tool
- Curtis handles DB replication
Staff tools: customer management / billing management / usage management
Remote tenant and billing system
- Justin (and future sales reps?) needs to be able to collect a new account's CC for purchasing our service and create their tenant.
Hide features that aren't ready for MVP
- Adjust landing page to show only completed features
- Add images to roadmap for upcoming features
Create demo tenant for sales calls
- Real-looking branding
- Fake customer info
- Real-world automation examples
Calendly setup
Wire the booking link to the retail page
Re-open registration
List of Coaching Leads
- Look on Skool / Instagram for coaches for window cleaning, pest control, HVAC, landscaping, etc
"Squash" migrations before MVP launch
There's a lot of migrations currently which means that it takes several seconds to create a new tenant. Use Laravel's "squash" feature to compile our DB structure into a single migration (which automatically removes the old migrations)
******** MVP LAUNCH ********
************ ************ ************ ************ ************ ************
Business Settings
- Get business open hours
- Get date of business started
- Get details about what the business does
- Get estimated annual revenue
- Block off holidays where business is closed
Feature paywall
- Decide on what features are in what tiers
- Start with all current features included in base plan?
Revamp pipeline page UI
The drag + drop effects on this roadmap are pretty cool, lets add them to the pipeline page.
Roadmap update
Update the roadmap to have more staff controls. (Edit entries, hide entries from public)
*Calendar adjustments
- Collect business operating hours in Business Settings page (Checkboxes for each day of the week with open-close time)

- Allow business to mark as closed for holidays. (Suggest Christmas, Thanksgiving, 4th of July etc) Affects the calendar page visuals on holidays to schedulers don't mistakenly book jobs on holidays.

- Calendar should reflect business hours (instead of 12am-12am) and visually block off holidays, but still allow scheduling.
* Be able to edit what columns to show on customer grid
Jobs wireframe (Justin)
Jobs page list view: show separate list of jobs not marked as complete with alert above the list
Complete Calendar feature
Create seeder stuff for new tenants
- Templates for automations
Local Ads esp:339998
esp:339998

Local Digital Ads
Create an ad campaign that targets local businesses (perhaps via Facebook + Instagram and even email) that pitches us like this:

"We're looking for 10 Utah-based service businesses that are frustrated with [Service AutoPilot / LMN / FieldRoutes], etc. Crewvana is a new platform built by local developers who want to make things simpler. Beta testers get early access, direct input into development, and free use during the pilot phase."

Essentially inviting local small businesses to be "Crewvana Founding Partners" or "Crewvana Insider Crew" to make them feel connected to our project. I think that targeting "local" businesses makes it feel more personal and adds a layer of automatic trust.

Local postcards
Create a list of 50–100 local service companies (harvested from Google Maps or Yelp). Mail them a simple postcard:

"We’re building a better platform for field service companies — right here in Utah. No sales pitch. Just a chance to try it free and tell us what sucks about the others. Visit crewvana.com/pilot."
Analytics page
See Balsamiq wireframe
Setup support inbox
- Justin will be the onboarding and support POC for all cold-call accounts until we have a support inbox.
Meta Ads setup
- Create Facebook and Instagram accounts
- Create campaign with daily budget (<$100)
- Setup CV to accept leads from FB Instant Forms OR use a CV form.
- Create a custom ad form instead of FB Instant Forms that is longer and acts more like a top-of-funnel free trial signup form?
Inbox Feature - https://balsamiq.cloud/s3302w4/pwmw9ki/rF288
- Inbox for sending/receiving calls/messages through SMS provider (Twilio) and managing customer
Twilio integration
Folders for automations
Add Contact Fields to the Create Contact Automation
- Be able to assign users
- Be able to set address
- Be able to set the source/campaign source/etc
"Add Customer to Workflow" automation action
- An automation action for adding a customer to a second, separate automation.
- Use case: Workflow A is triggered by a job being marked as complete and sends the customer a text that asks for a Google review. At the end of Workflow A, it adds the customer to Workflow B, which waits 4 months before sending the customer an automated SMS reminder to schedule their next cleaning.
Automation draft + publishing
An automation should not be published be default, meaning it won't pick up the trigger and run the automation. Think of it like an off/on switch.

Create a toggle switch for draft/publish in the automation datagrid and automation edit.
"Get Visit" automation action
Retrieve a Visit into context by searching for it by: Customer (accept customer record or passing in a string), visit scheduled date, servicing technicians (find by selecting technician record or passing in string),
Automation enrollment and execution history
Each automation should log enrollment and execution.

Enrollment tracks what users were added to the automation and when. Execution tracks which steps were executed, the subject of the action, and what the results of the action are.
Finish and publish automation system
- Consolidate create and update into one action.
Customer notes
- Be able to save notes for a customer
- AI feature to show notes summary for each customer?
SMTP for Inbox
Mobile app
Capacitor PWA framer?
Tenant seeder with template selection
Template configs are stored in config > template
CRUD Visit automation actions
- Automation actions for Create, update, delete Visit
Quotes feature
- Create quote template, generate quote from template, and send quote to customer.
- Quotes have a unique URL
- Customers can accept the quote
- Automation triggers for "quote sent", "quote viewed", and "quote accepted"
- Automation actions for "send quote", and "update quote" (edit fields, cancel quote, mark as accepted)
- What forms of authentication for customer to use to accept quote since the quote URL will be public? OTP?
Company Crosspromotion
- Our customer's can choose to share their leads with other companies on our platform and they get a kickback.
- Link that the end customer clicks to get in contact with the other company.
FontAwesome regular / slim icons
Next up
6
* Additional contact actions and bulk action queueing?
- Queuing for bulk actions- worth it for server performance?
- Bulk change pipeline and stage
- Bulk add tag
- Bulk remove tag
- Bulk send SMS (eventually)
- Bulk add to automation
- Bulk remove from automation
* Be able to click and view customers from pipeline page
* Map "map" style not loading, street map works
-Default to street map
Contact saving issue
Contact information magically got deleted (phone, email) after adding a new tag to Susan Ellis. Saved, now email, phone, and the new tags do not show on her edit form or the datagrid row.
* Fix: multiple automations created after saving 1 new automation
http://image.serverbox.net/sharex/202511/18_15-01-1325x485-76548b2326d.png

Created the notification automation and two blank ones got created with it.
Lock roadmap behind staff auth middleware
- Make roadmap not public until we launch
https://crewvana.com/roadmap
In-progress
1
Investigate connection issue
Occasionally I get error when trying to load a pipeline or save a contact/automation. It sometimes shows our "Crewvana is offline" page (styled, looks nice) and sometimes it shows the web browser "unable to connect" page.
Done
33
Pipeline filter
Allow for showing contacts by pipeline and stage. Also allow for showing contacts that don't belong to a pipeline or stage.
Pipeline QOL - Justin can do this
Justin: My pipeline has about 12 stages, and the page doesn't allow scrolling while dragging a contact across the page to a new status. Idea: When dragging a contact card, hide all other contacts and shrink the statuses into little boxes into a grid.
* Map: Pin filter (same filters as list view but for map view)
* QOL/Polish for contact tag adding (Justin)
Search bar/dropdown for adding tags to a contact. Having to CTRL+F to find the tag I want to add is not good for UX. (I have about 20 tags)
* Pipeline stage renaming
* Be able to create multiple notes for customers
* Form add tags to contact
Additional price library tabs
Currently, we only have the main tab where we store services. Add additional tabs for:

Materials
Pricing Forms
Estimate templates
Checklists? (TBD, maybe store elsewhere)

Don't worry about wiring these up to any logic, just want them to exist (even if commented out at MVP launch)
* Breadcrumb navigation for Price Library
*Cost and Price for price library items
- Cost tracks company cost to perform the price library item, price is what the customer pays
* Button to delete price library items and groups
* Additional namable subgroup for price libary
* Map pin
- Map pin delete button not working
- Save as lead, pin, contact needs to be consolidated to just "save"
* Server error on contact save
- Found the problem. The "primary" radio button for the email field is not selected by default.
- Please make the email and phone fields show by default on the contact creation form.
* Pipeline wont load when its the only pipeline
Doesnt load across the project. In the map view or the pipeline page.
* Fix multiple sets of nav tabs across project
*Switch order of last name, first name on Contact datagrid
Get Bright on CV
Central staff login
* Fix: distance not showing correctly on mobile map
http://image.serverbox.net/sharex/202511/18_15-22-430x932-2ddad3b226e.png
* Replace 'Calendar' with 'Jobs' across the UI
* Replace 'Visit' with 'Job'
I thought 'Job' was protected by Laravel but I was incorrect. Across the UI, find and replace 'Visit' with Job. Because we haven't launched yet, we should rename the table to job instead of visit.
Rename customer fields
- Adopt "contact" as the terminology for lead/customer?
- Across the UI, replace "Customer" and "Lead" with "Contact"
- Rename customer fields "given_name" and "family_name" with "first_name" and "last_name"
Additional sources in Forms
Overwrite source, channel_source, and campaign_source in Form edit. Use case: Justin wants to know how many sales come from his yard signs, so he puts QR codes on them that link to a yard-sign specific CV form.
Button to mark job as paid
Notification system
Additional customer source fields
Add channel_source and campaign_source to `customer` for precise lead source attribution
`Tag Added` and `Tag Removed` trigger
Pipeline page tweak
By default, show only one pipeline. (selection menu)
Tags settings page
- Create a settings page to manage customer tags
"Find Customer" automation action
Adjust `Add Tag` action to support strings
API page