DEV Community

Miran profile picture

Miran

Building small tools for messy real-life problems. Writing about product ideas, small workflow gaps, and building with AI.

Location United States Joined Joined on 

Work

Builder

I Didn't Add “Late” as Another Shift Status

I Didn't Add “Late” as Another Shift Status

Comments
4 min read

Want to connect with Miran?

Create an account to connect with Miran. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
I Made AI Extraction a Review Input, Not a Final Record

I Made AI Extraction a Review Input, Not a Final Record

Comments
5 min read
My CSV Import Needed a Debugging Surface, Not Just a Success Toast

My CSV Import Needed a Debugging Surface, Not Just a Success Toast

Comments
4 min read
I Put the Recipient List Where the Send Decision Happens

I Put the Recipient List Where the Send Decision Happens

Comments
4 min read
A Shift Confirmation Is Useless If the Assignment Changes Under It

A Shift Confirmation Is Useless If the Assignment Changes Under It

Comments
4 min read
I Kept Scheduling Out of My Shift Confirmation Tool

I Kept Scheduling Out of My Shift Confirmation Tool

Comments
4 min read
I Didn't Want “Not Applicable” to Be a Client-Controlled Final State

I Didn't Want “Not Applicable” to Be a Client-Controlled Final State

Comments
4 min read
I Stopped Treating “Sent” as an Email Success State

I Stopped Treating “Sent” as an Email Success State

Comments
4 min read
A Status Column Wasn't Enough for My Document Request Tracker

A Status Column Wasn't Enough for My Document Request Tracker

Comments
4 min read
A Missed Reply Is Not a No-Show Yet

A Missed Reply Is Not a No-Show Yet

Comments
4 min read
A Merchant ID Is Context, Not an Integration

A Merchant ID Is Context, Not an Integration

Comments
5 min read
I Wouldn’t Make “Reason for Cancellation” a Required Field

I Wouldn’t Make “Reason for Cancellation” a Required Field

Comments
4 min read
I Didn’t Turn Every Missing-Document Email Into a Workflow

I Didn’t Turn Every Missing-Document Email Into a Workflow

Comments
4 min read
I Didn’t Add “Reminded” to the Shift Status Enum

I Didn’t Add “Reminded” to the Shift Status Enum

Comments
4 min read
My Date Validator Would Have Rejected the Right Bank Statement

My Date Validator Would Have Rejected the Right Bank Statement

Comments
4 min read
“Manage Shift” Was Too Broad for a Cover Workflow

“Manage Shift” Was Too Broad for a Cover Workflow

Comments
4 min read
The Accept Button Shouldn't Be the First Thing on a File Review Screen

The Accept Button Shouldn't Be the First Thing on a File Review Screen

Comments
4 min read
The Confirmation Was Valid. Then the Shift Changed.

The Confirmation Was Valid. Then the Shift Changed.

Comments
4 min read
A File Upload Can Succeed and Still Lose the Request Context

A File Upload Can Succeed and Still Lose the Request Context

Comments
4 min read
A Backup Cleaner Is Planning Data, Not the Next Assignee

A Backup Cleaner Is Planning Data, Not the Next Assignee

Comments
4 min read
The Bank Feed Broke. I Still Didn’t Put the Fix Inside the Document Request

The Bank Feed Broke. I Still Didn’t Put the Fix Inside the Document Request

Comments
4 min read
Why I Wouldn’t Model a Shift Swap as Two Cover Requests

Why I Wouldn’t Model a Shift Swap as Two Cover Requests

Comments
4 min read
My Feature Matrix Broke When the Products Owned Different Layers

My Feature Matrix Broke When the Products Owned Different Layers

Comments
4 min read
A “Rejected” Badge Is Not a Next Action

A “Rejected” Badge Is Not a Next Action

Comments
4 min read
Before I Debug an “Overdue” Shift, I Check Whether It’s Still Unconfirmed

Before I Debug an “Overdue” Shift, I Check Whether It’s Still Unconfirmed

Comments
4 min read
I Wouldn’t Let an AI Confidence Score Close a Document Request

I Wouldn’t Let an AI Confidence Score Close a Document Request

Comments
4 min read
One “Status” Column Wasn’t Enough for a Shift Confirmation Record

One “Status” Column Wasn’t Enough for a Shift Confirmation Record

Comments
4 min read
A Due Date Isn’t Enough to Decide Whether a Reminder Should Send

A Due Date Isn’t Enough to Decide Whether a Reminder Should Send

Comments
4 min read
I Left the “Claim Shift” Button Out of an Assigned-Shift Tool

I Left the “Claim Shift” Button Out of an Assigned-Shift Tool

Comments
4 min read
A Cleaner Saying “Yes” Shouldn’t Reassign the Shift

A Cleaner Saying “Yes” Shouldn’t Reassign the Shift

Comments
4 min read
A Bookkeeping Upload Form Shouldn’t Inherit Every Field From the Source System

A Bookkeeping Upload Form Shouldn’t Inherit Every Field From the Source System

Comments
4 min read
A Correct Timestamp Can Still Be the Wrong Thing to Show First

A Correct Timestamp Can Still Be the Wrong Thing to Show First

Comments
4 min read
The Upload Finished. The Document Request Didn’t.

The Upload Finished. The Document Request Didn’t.

Comments
4 min read
One “Migration Documents” Upload Field Erases Too Much Context

One “Migration Documents” Upload Field Erases Too Much Context

Comments
4 min read
Why I Refused to Treat “Sent” as an Email Delivery Result

Why I Refused to Treat “Sent” as an Email Delivery Result

Comments
4 min read
Why My CSV Import Stops Before It Sends Any Shift Emails

Why My CSV Import Stops Before It Sends Any Shift Emails

Comments
4 min read
Completing the Parent Task Shouldn’t Close Its Evidence Requests

Completing the Parent Task Shouldn’t Close Its Evidence Requests

Comments
5 min read
A Manual Processor Export Still Needs an Interface Contract

A Manual Processor Export Still Needs an Interface Contract

Comments
5 min read
A Source Report Shouldn’t Look Overdue Before It Exists

A Source Report Shouldn’t Look Overdue Before It Exists

Comments
5 min read
A Long Valuation Checklist Is Not Yet a Client Request

A Long Valuation Checklist Is Not Yet a Client Request

Comments
5 min read
Billing Reports, Processor Payouts, and Bank Statements Should Not Share One Upload Type

Billing Reports, Processor Payouts, and Bank Statements Should Not Share One Upload Type

Comments
5 min read
Debugging a Document Request That Turns Green Too Early

Debugging a Document Request That Turns Green Too Early

Comments
5 min read
The Last Chat Message Shouldn’t Decide Whether a Cleaning Shift Is Covered

The Last Chat Message Shouldn’t Decide Whether a Cleaning Shift Is Covered

Comments
5 min read
Who Gets to Mark a Client Upload as Reporting-Ready?

Who Gets to Mark a Client Upload as Reporting-Ready?

Comments
5 min read
The Request Was Ready to Close, but the Work Wasn’t Complete

The Request Was Ready to Close, but the Work Wasn’t Complete

Comments
5 min read
The Upload Succeeded, but the Application Still Didn’t Know What the File Was For

The Upload Succeeded, but the Application Still Didn’t Know What the File Was For

Comments
5 min read
Designing a Document Request Form Around the Wrong-Month Problem

Designing a Document Request Form Around the Wrong-Month Problem

Comments
4 min read
Designing a Client Upload Flow Without Turning It Into a Portal

Designing a Client Upload Flow Without Turning It Into a Portal

Comments
4 min read
The Moment an Email Template Needs Its Own Data Model

The Moment an Email Template Needs Its Own Data Model

Comments
4 min read
What I Learned Adding Email Notifications to a Small SaaS MVP

What I Learned Adding Email Notifications to a Small SaaS MVP

Comments
6 min read
Why Time Zones Matter Even in a Small Scheduling Tool

Why Time Zones Matter Even in a Small Scheduling Tool

Comments
5 min read
What Should Staff See Before They Accept a Cover Shift?

What Should Staff See Before They Accept a Cover Shift?

Comments
5 min read
How I Use AI to Find Edge Cases Before Building a Feature

How I Use AI to Find Edge Cases Before Building a Feature

Comments
6 min read
The Dashboard Should Show What Needs Attention, Not Everything

The Dashboard Should Show What Needs Attention, Not Everything

Comments
5 min read
Designing Shift Statuses for a Small Team Scheduling Tool

Designing Shift Statuses for a Small Team Scheduling Tool

Comments
6 min read
What Happens When Two People Try to Cover the Same Shift?

What Happens When Two People Try to Cover the Same Shift?

Comments
5 min read
Building a Cover Flow for Missed Shifts

Building a Cover Flow for Missed Shifts

Comments 2
4 min read
What Looked Simple Until I Started Building the MVP

What Looked Simple Until I Started Building the MVP

Comments
3 min read
The Messy Part Usually Starts After the Schedule Is Sent

The Messy Part Usually Starts After the Schedule Is Sent

Comments
2 min read
loading...