Skip to content
Dallan
HomeAboutWorkResumeContact
HomeAboutWorkResumeContact Me
  • GitHubGitHub
  • LinkedInLinkedIn
  • Amity ResultsAmity Results
  • Email Dallan JonesEmail Dallan Jones
Dallan Jones /about

Places

Portrait of Dallan Jones

Dallan Jones

workflow automation · long-running pipelines · AI service integration

I help turn complicated business processes into automatic systems. Most of my work has been on big platforms that help teams work together in real-time, automate payments, and manage data. Since 2024, I've also built my own products under Amity Results, including a software platform I own and built completely. I care about what happens behind the scenes as much as what it shows you, because that's where the real time savings come from.

Read the case studies

Where I've worked

Founder & Full-Stack Developer — Amity Results

Jul 2024 – Current

Founded and built a SaaS media platform that transcribes, translates and subtitles instructional video — my own product, owned outright from architecture through deployment.

Full-Stack Developer — Fabled Solutions

Sep 2022 – Mar 2025

Extended a legacy F&I platform used by 2,000+ dealerships — real-time collaborative editing, a role-based claims dashboard, and an automated XML/SOAP sync pipeline.

Junior Full-Stack Developer — Fabled Solutions

Mar 2022 – Sep 2022

Built a U.S. Bank Virtual Card payment integration, external REST APIs for insurance partner onboarding, and a multi-dealership vehicle purchasing workflow.

Coding Bootcamp Mentor — Juno College

Oct 2021 – Apr 2022

Mentored students one-on-one through coursework, debugging and refactoring, and reviewed their projects for code quality and maintainability.

What I do, and what it changed

Four capabilities I bring to product teams, each tied to work that shipped and a problem it changed for someone.

Workflow automation

Turn repeated, manual processes into dependable workflows. A safety instructor no longer has to translate aloud over the same training video in every class.

Read how

AI service integration

Connect transcription, translation and language models to real product workflows — with source-grounded timestamps, reviewable outputs and recovery when an external service fails.

Read how

Resilient background processing

Design long-running pipelines that can retry, resume and clean up after themselves. Upload, transcode, transcribe, translate and encode can each fail without losing the whole job.

Read how

Modernizing live systems

Add new capabilities without interrupting the people already using the system. A platform serving 2,000+ dealerships gained recording, AI transcription and searchable compliance records.

Read how

Why this work matters

The point is not another dashboard or an AI badge. It is software that removes repeated effort, behaves predictably when something fails and gives people an output they can actually use.

Less work gets repeated

Automation should remove a recurring task, not move it into a different screen. The result is time returned to the people doing the actual work.

Failures stay manageable

Retries, audit trails and explicit recovery paths keep a failed service or abandoned browser session from becoming an operational emergency.

AI produces usable output

AI matters when it is grounded in source material, placed inside an existing workflow and designed so a person can verify what it produced.

Proof in practice · Amity Results

A reusable lesson instead of a repeated translation

A safety instructor was translating aloud while her English training videos played for Vietnamese-speaking students. Amity Results turns the same source video into transcribed, translated and permanently subtitled material. She can teach the class instead of performing the same translation again, and the finished lesson can be reused.

See it liveHow it was built
Contact /contact
Contact

Let's talk.

Whether it's a role, a contract, or just a technical problem you'd like a second opinion on — send a message and I'll get back to you directly.

Direct

dallanjones@pm.me

Elsewhere

Based in Edmonton, AB. Typically replies within a day or two.

Résumé resume.pdf

Your browser won't display PDFs inline.

Download the résumé
Terminal ~

Desktop ready. Terminal available.

Making a Job Search Measurable /work
Jump to section
  • Overview
  • Problem
  • Product Approach
  • One workflow, not a collection of utilities
  • A pipeline that preserves context
  • Turning History Into Feedback
  • Security and Data Boundaries
  • Migrating Without Guessing
  • Engineering Quality
  • Outcome
Project Details
View source

Technologies

Laravel 13PHP 8.3Vue 3TypeScriptInertia.js 3Tailwind CSS 4Laravel FortifyLaravel WayfinderPest 5PHPStanSQLite

Engineering Highlights

  • Status history converted into useful funnel analytics
  • Drag-and-drop application pipeline
  • Applications, contacts, interviews, notes, and tasks in one model
  • User-scoped route binding and authorization policies
  • Two-factor authentication and passkey support
  • Dry-run, idempotent CSV migration
  • Static analysis, type checking, formatting, and automated tests

Making a Job Search Measurable

Role Product Designer / Full Stack DeveloperIndustry Career ManagementUsers Individual Job Seekers

Overview

A job search produces plenty of activity but very little memory. Applications disappear into company portals, follow-ups live in calendars or notes, contacts are scattered across messages, and the only reliable status update is often an automated rejection email.

I built Job Search Hub as an open-source workspace for keeping that work together. It tracks opportunities from discovery through a final outcome, connects applications to people and interviews, and turns status history into metrics that can answer a more useful question than “How many jobs have I applied to?”

That question is: What is working, and what needs attention next?

The application is deliberately private by default and simple to run locally. It uses Laravel for the domain and authorization layer, with a Vue and TypeScript interface delivered through Inertia.

Your browser can't play this video. Download the demo instead.

A twelve-second tour of the dashboard and application workflow.

Problem

Most job-search trackers are good at storing a row and poor at representing a process.

A spreadsheet can hold a company, role, date, and status. It becomes much less useful when the search needs to represent:

  • Several contacts at the same company
  • Multiple interviews for one application
  • Tasks with priorities and due dates
  • Compensation and workplace preferences
  • Notes that should remain private
  • A status that changes several times
  • Follow-ups that become overdue
  • The source that produced an interview rather than merely an application

The distinction between current state and history is especially important. A single status cell can say an application is at the interview stage, but it cannot say how long the employer took to respond, when the transition happened, or how frequently applications from that source progress that far.

Without that history, the tracker records activity without helping improve it.


Product Approach

One workflow, not a collection of utilities

The central object is a job application, but the product is built around the work surrounding it. Each application can carry role details, compensation, workplace type, the original posting, a description, and private notes. Contacts and scheduled interviews attach to that context instead of living in separate address-book and calendar silos.

Tasks provide the operational layer. They can be prioritized, assigned due dates, and surfaced alongside interviews in an upcoming-actions view. The result is a single place to answer both “Where does this opportunity stand?” and “What should I do next?”

Job Search Hub applications table with search, stage filtering, and rows for roles, companies, locations, and application dates.
The applications view keeps opportunity details searchable without hiding the current stage.
Upcoming actions screen grouping overdue follow-ups and scheduled work into a chronological view.
Interviews and follow-ups share one chronological view, with overdue work called out explicitly.

A pipeline that preserves context

Applications move through a drag-and-drop Kanban board from saved opportunities to active applications, interviews, offers, rejections, or an archive.

The interaction is quick, but the move is not treated as a cosmetic rearrangement. A stage change is domain history. Preserving it makes later analysis possible and prevents the interface from reducing a months-long search to a snapshot of its current state.

Search and filters are designed to narrow that pipeline without making the user lose their place. The same filtering needs also led to a reusable package, Laravel Query Filters, which keeps request-driven Eloquent filters explicit and allowlisted.

Application pipeline filters for role or company, company, location, and application date range.
Pipeline filters cover the questions used during an active search while keeping accepted query inputs explicit.

Turning History Into Feedback

The analytics dashboard derives practical measures from the activity already recorded during normal use:

  • Funnel conversion between application stages
  • Application activity over time
  • Employer response-time distribution
  • Performance by application source
  • Opportunities and follow-ups needing attention

This avoids asking the user to maintain a second analytics dataset. Moving an application, scheduling an interview, or recording an outcome creates the history needed to explain the search later.

There is an important product constraint here: the dashboard should support decisions without pretending the data is more conclusive than it is. A personal job search is a small dataset affected by role, market, timing, geography, and chance. The metrics are therefore presented as feedback about this search—not universal advice about how hiring works.

Job Search Hub dashboard showing active applications, interview rate, response time, items needing attention, and the next seven days.
The dashboard opens with decisions: what needs attention now and what is coming next.
Analytics showing a job application pipeline funnel, time-to-first-response distribution, and applications by week.
Historical stage changes become funnel, response-time, and activity measures without additional bookkeeping.

Security and Data Boundaries

Job-search data contains private notes, compensation expectations, contact information, and a detailed record of professional activity. “Users must be logged in” is not an adequate authorization model for it.

The application uses layered account and resource protection:

  • Email verification and password confirmation for sensitive account actions
  • Two-factor authentication and passkey support through Laravel Fortify
  • Authorization policies around user-owned resources
  • User-scoped route model binding so another user’s identifier cannot resolve into a controller action
  • Server-side validation before filters or writes reach the domain layer

The application defaults to SQLite and can run on a user’s own machine. That makes local evaluation straightforward and gives users a deployment path that does not require sending their search history to a hosted service operated by the project.


Migrating Without Guessing

The first version of this workflow existed in a simpler CSV-based tracker. Replacing it created a practical requirement: existing history had to move into the new relational model without duplicate records or a leap of faith.

I built an Artisan import command with two safety properties:

  1. Dry-run first. The command can parse and preview the migration without writing anything.
  2. Idempotent execution. Running the import again does not duplicate data already migrated.

The importer accepts an explicit target user and only infers one when the database contains exactly one account. That keeps a convenient local workflow from becoming ambiguous in a multi-user installation.

This is a small feature from the interface’s perspective, but it is the difference between a demo that starts empty and a tool someone can actually adopt without abandoning their history.


Engineering Quality

The repository is intended to be read, run, and changed by people other than its author, so the development workflow is part of the product.

Backend checks combine formatting, PHPStan/Larastan static analysis, and a Pest test suite. The Vue and TypeScript frontend has separate lint, format, and type-check commands. Demo data can be seeded repeatedly without disturbing non-demo accounts, giving reviewers a representative search without requiring personal information.

The application also separates responsibilities along recognizable boundaries:

  • Laravel actions and controllers coordinate use cases
  • Models and policies own data relationships and authorization
  • Query filters express reusable search behavior
  • Inertia pages and Vue components own the interactive workflow
  • Generated Wayfinder routes keep frontend navigation aligned with Laravel routes

The goal is not architecture for its own sake. It is to make changes to analytics, filtering, or workflow behavior possible without quietly weakening the data boundary around every user’s search.


Outcome

Job Search Hub is a working, installable application rather than a static portfolio demo. It combines the operational parts of a search—applications, relationships, interviews, and follow-ups—with enough history to evaluate the process afterward.

It also became a useful proving ground for two ideas I value in product engineering:

  • The data created by doing the work should produce feedback without extra bookkeeping.
  • A personal tool still deserves production-grade authorization, migration safety, and automated quality checks.

The project is open source under the MIT license. Read the source and run it locally.

PreviousTeaching Without TranslatingNextModernizing an Insurance Platform
View source

Technologies

Laravel 13PHP 8.3Vue 3TypeScriptInertia.js 3Tailwind CSS 4Laravel FortifyLaravel WayfinderPest 5PHPStanSQLite

Engineering Highlights

  • Status history converted into useful funnel analytics
  • Drag-and-drop application pipeline
  • Applications, contacts, interviews, notes, and tasks in one model
  • User-scoped route binding and authorization policies
  • Two-factor authentication and passkey support
  • Dry-run, idempotent CSV migration
  • Static analysis, type checking, formatting, and automated tests
On this page
  • Overview
  • Problem
  • Product Approach
    • One workflow, not a collection of utilities
    • A pipeline that preserves context
  • Turning History Into Feedback
  • Security and Data Boundaries
  • Migrating Without Guessing
  • Engineering Quality
  • Outcome

All work

Case studies

  • Teaching Without TranslatingA media platform that transcribes, translates, and burns subtitles into instructional video — built so a safety instructor could stop translating aloud over her own lessons, after a thirteen-day emergency script proved the problem was worth solving properly.Laravel 12Laravel OctaneVue 3
  • Making a Job Search MeasurableAn open-source job search workspace that turns applications, conversations, interviews, and follow-ups into one traceable workflow — then uses the history of that work to show what is actually producing results.Laravel 13PHP 8.3Vue 3
  • Modernizing an Insurance PlatformAn enterprise claims management platform designed to streamline claim processing, improve collaboration, and automate complex business workflows.LaravelVue.jsMySQL
  • Screen Recording Audit SolutionAn enterprise compliance and AI-powered auditing platform for automotive F&I presentations, featuring browser-based recording, automated transcription, searchable subtitles, and PDF audit reporting.LaravelPHPVue 2

Open source

Focused projects whose code is the case study.

  • Laravel Query FiltersA composable, allowlist-based Eloquent filtering package with explicit value-presence rules, safe wildcard handling, relationship search, and an extension API for application-specific filters.PHPLaravelEloquentComposer
  • Kim Painting CMSA custom website and lightweight CMS that lets a painting contractor manage pages, navigation, projects, galleries, testimonials, and customer enquiries without developer support.LaravelLivewireAlpine.jsTailwind

Experiments

Built for their own sake. No write-ups.

  • Desktop Environment Portfolio2023A browser window manager — drag, resize, snap, minimise to dock with a genie animation. Never shipped: I bolted an admin backend onto a portfolio, which is a lesson rather than a feature. Its window logic runs this site.Vue 3PiniaLaravel
  • 2D RPG Engine2023Quest, inventory, dialog and NPC systems built from scratch, because the interesting part of a game is the systems underneath it.GameMaker Studio 2GML
  • Encrypted Chat Platform2022Direct and group chat with Pretty Good Privacy encryption — written before I had any business writing crypto, which was the point.PHPMySQLJavaScriptjQuery

Nothing matches that.