Roadmap

Backlog
56
Marketing + comparison pages On hold
- Rewrite to show only available features
Staff tools: customer management / billing management / usage management
Tenant backup/restore staff tool
Due: Feb 28, 2026
- Curtis handles DB replication
* Fix: multiple automations created after saving 1 new automation On hold
http://image.serverbox.net/sharex/202511/18_15-01-1325x485-76548b2326d.png

Created the notification automation and two blank ones got created with it.

(Need to fine a way to reproduce this issue)
Contact saving issue On hold
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.

(Need to confirm this is still an issue)
Create demo tenant for sales calls
- Real-looking branding
- Fake customer info
- Real-world automation examples
Re-open registration
"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 ********
************ ************ ************ ************ ************ ************
Feature paywall
- Decide on what features are in what tiers
- Start with all current features included in base plan?
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
Contact duplicate merging (Justin)
- For performance, is it possible to run this check on contact create/update instead of each time the Contact datagrid loads?
- Add alert to the Contact Grid that appears when duplicates are detected (detection by phone, email, name, address).
- Contact merging system UI
Onboarding / qualification flow
- When customers click "Start 14 Day Free Trial" start this flow
- Collect their vertical, company size, area
- CTA to receive credit for booking an onboarding call
- If they don't sign up immediately with CC info, then add them to flow for calling them twice during their free trial.
- When finished with onboarding flow, redirect to app onboarding page (dedicated nav tab)
Lock roadmap behind staff auth middleware
- Make roadmap not public until we launch
https://crewvana.com/roadmap
Roadmap update
Update the roadmap to have more staff controls. (Edit entries, hide entries from public)
Revamp pipeline page UI
The drag + drop effects on this roadmap are pretty cool, lets add them to the pipeline page.
*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
Updated Tag Rendering
If a tag as a ':', treat anything before the ':' as a category label and render everything after as a pill.
(Justin)
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?
Create Facebook App (OAuth, leadgen webhook)
- Requires business verification (Valid EIN, address, etc)
- May require Tech Provider verification to have it automatically set the app as the lead provider

(It currently uses Justin's FB account)
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
Marketing page: Crewvana info for AI
https://www.getjobber.com/llm-info/
Marketing page: reviews hub
Marketing pages: Industries we serve (and detailed pages)
Marketing page: site map
https://www.getjobber.com/sitemap/
ReCaptcha for forms
Track views/submissions for forms
Bright feature request: Multi-page Forms
Bright feature request - Contracts/agreements
- Need a way for users to generate, send, collect, and store signed agreements from Contacts.
Bright feature request - View past jobs in Contact form
Bright feature request - KPI dashboard overall, team, tech, sales rep stats
UI Overhaul
Our UI evolves with every new feature. Have AI pull the styles from our "best" pages, add to the Design Standard, and then overhaul all components / SCSS to match.
Next up
4
Combine detect map location and detect address into one function
List of Coaching Leads
- Look on Skool / Instagram for coaches for window cleaning, pest control, HVAC, landscaping, etc
Add + rename contact_address fields
address_line1 - Street address (number + street)
address_line2 - Apt / Suite / Unit / Floor (optional)
city - Locality
state - Administrative area (state / province)
postal_code - ZIP / postal
country - ISO-3166-1 alpha-2 (e.g. US)
AI go through project and move inline CSS to files
- DataGrid extensions
- Bootstrap extensions
- Custom.scss etc
In-progress
5
Billing system
- Use iSparks (faster)
- Stripe and Mercury (requires entity and adding tenant integration)
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.
Create staff tenant for tracking CV customers
UI adjustments (Justin)
⚠️ Add tooltips and helper text
- Sentence-case audit
- Mobile UI audit

✅ Start design reference
✅ Standardize theme
✅ Theme switcher button
✅ Create components for repeatedly used elements
Marketing - Price, trials, discount consistency across marketing pages.
Done
50
Hide features that aren't ready for MVP
- Adjust landing page to show only completed features
- Add images to roadmap for upcoming features
Can't see staff-only roadmap entries
Team delete button + function
Role delete button + function
* 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
Cannot save new forms
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'no' for column 'advanced' at row 1
* Be able to add projected value to contact
SEO comparison pages
(Justin)

✅ List of competitors, features, pricing in a config file
✅ Feature comparison table
✅ Comparison 'hub'
https://crewvana.com/compare
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.

Solution: it looks like Sysmon was killing nginx once per minute.

From Curtis:

It was working from the command line (running sysmon from the command line doesn't restart Nginx), but not from cron. That's a big clue. Probably a path issue (which is typical when cron breaks something). Anyhow, not critical to have it running yet, so we can address this later.
Calendly setup
Wire the booking link to the retail page
Disable user login switch
- This should probably be setup to eventually work with a billing system in case we decide to go with per-user for subscriptions
- 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.
Browser notification when CV notification
Allow logins to persist for more than 1 day
Justin: Extended to 30 day session
QOL - "Mark as read" button for notifications
Justin: Realized some notifications can be super urgent, don't want to accidentally mark it as read by viewing it if it is not resolved yet.
Facebook integration
✅ Facebook OAuth and Page selection
✅ Facebook webhook subscription
✅ Facebook form automation trigger
Upgrade to MapBox
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
Form submission trigger
- Add an automation trigger to detect when a form is submitted