Jobflo Mobile

  • 2026
  • Mobile app
  • Flutter
  • SaaS

The phone app reps use to pick up, lock and finish their Jobflo tasks.

Role
Product Designer, Flutter Developer
Industry
SaaS / Field Service
Contribution
Product designUI designFlutter front endDark mode
Timeline
April to September 2026

Jobflo Mobile is the phone app for the people who work Jobflo's workflows in the field: sales reps, project coordinators and crew leads. It shows the tasks a rep is allowed to see, lets them pick work from a shared pool, and turns each task into a form they can finish on a roof or in a driveway. I designed it in Figma and built most of the Flutter screens.

Reps were running their day from the web app on a phone browser. It worked, but barely.

  • No clear list of today's work. My tasks, the team's shared pool, and overdue items all lived on different web pages.
  • Locks nobody could see. The web app locks a task for 15 minutes while someone works it. On a phone there was no way to tell who held it or when it ran out.
  • Forms built for a desk. Long inspection forms, photo uploads and rich text did not fit a small screen.

One app where a rep opens their day, sees what is due and what is free to grab, and finishes a task without calling the office. The Laravel app stays the source of truth: the phone reads what the server says and writes only through the mobile API, so permissions never drift between web and mobile.

Product design and Flutter front end. I designed the screens in Figma, then built the dashboard, workflow list, task detail, task options, profile, offline cache and dark mode in Flutter, working with the lead engineer who owned the Laravel side. We shipped it to TestFlight and ran two sprints of feature and bug work after that.

Every screen answers one question for the rep:

  1. Home: what do I owe today? Four counters, then My Tasks and Workbasket grouped by day.
  2. Workflow: what else is out there? One tab per workflow, with grouping, sorting and filters in a sheet.
  3. Task: what exactly do I do, and is anyone else on it? A read-only review first, then an explicit Start Task.
  4. Result: what did I send? A summary of every answer and photo after submit.

The rule I kept: hide actions the rep cannot take instead of greying them out. A disabled "Complete Task" reads as "try again later", so if the server says no, the button is not there.

Opening a task used to take the 15 minute lock without telling anyone, so a rep who only wanted to look had already blocked their teammates. Now a task opens as a review screen and the lock starts on Start Task, with a countdown under the header and a warning before it runs out. The prototype below runs the screens from the Figma file on the same demo data the app ships with: seven jobs, three Workbasket queues and the locks already held on them. Claim something from the Workbasket, start the site survey, fill it in and submit.

Live prototype preview. Open a task, start it, fill the form and submit.

1/7 ยท Home. Switch between My Tasks and Workbasket. The counters follow your work.

Live prototype preview. Switch between My Tasks and Workbasket, group the list by lock, then start the 14 Maple Lane survey, fill it in and submit. Skip to lock warning shows the hold running out.

Work locks you can see

  • "Locked by" chips on every card, so nobody opens a task someone else is working
  • Lock countdown with an Extend hold action before it expires
  • Drafts survive a lost lock

My Tasks and Workbasket

  • Personal work and the team's shared pool side by side
  • Claim from the pool in one tap; counts match the web app

Display options

  • Group by deadline, type, subtype or lock state
  • Sort and filter by assignee, lock state, subtype and case

Built for the field

  • Offline cache, plus a queue that sends completed tasks once the signal is back
  • Haptics on key actions, and a dark mode that does not glare in a truck at night

More listedProjects