Doma• 2022
800% order growth, zero missed home closings
Role
Product Designer — sole designer, end to end
Timeline
2 months (Spring 2022)
Team
PM, Lead Engineer, UX Researcher, internal SMEs
Skills
Discovery & Research, Systems / Workflow Design, Designing for Automation, End-to-end UX, Dev Handoff
Overview
How do you schedule a closing without making it someone's full-time job?
Doma is a tech-driven title and escrow company with a blunt mission: drag a 200-year-old industry into the present, and take a slice of a roughly $23 billion market in the process. Real estate still closes slowly because the machinery behind it runs on processes designed in the 1800s — and the people who run that machinery are aging out faster than the industry can replace them.[9]
Doma's answer was machine learning: the machine handles the tedium, people handle the decisions. That bet ran on Doma Core, its internal production system. I was the sole designer on the Scheduling Module — the last gate before a family can sign for their home, and the least reliable step in the chain. With it, the most failure-prone job in the building became one form and a button.
What this required.
Domain Discovery
Learning an arcane process — split signings, SLAs, notary logistics — well enough to redesign it.
Systems Design
How scheduling data, tasks, and comms move across a remote, assembly-line org.
Designing for Automation
Deciding what the machine should do — and where a human still has to.
Problem
The whole closing rides on one appointment.
A home closing is a relay — title cleared, settlement balanced, documents finalized, mostly by remote specialists. But none of it matters until the borrower sits down with a notary who has the right documents and signs. Miss that one appointment and the whole transaction stalls, however clean everything upstream was.
So the entire closing hung on its single weakest step. Across the industry, roughly one in five U.S. closings slips its date[1] — and the signing was where it was most likely to go wrong. Title and escrow still runs on manual, legacy systems;[4] at Doma, scheduling was the worst of it, living outside the production system entirely. Appointments were tracked by hand, documents and shipping labels prepped manually, notaries managed in a separate portal, the clock watched for whatever might break. At Doma's volume, something always did.
And a slipped date is never just a delay — the cost compounds outward. The borrower can owe hundreds to over a thousand dollars in rate-lock extensions.[2] The lender — Doma's actual customer — wears it in front of their borrower: a missed close date costs a lender 57 Net Promoter Score points.[3] Burned lenders send their next orders elsewhere. Doma's growth ran straight through the one step nobody had systematized.
Solution
One form. Core handles everything after the button.
I designed the end-to-end experience inside Doma Core — the creation form, the appointment card, the tasks, and the order activity that ties them together.
The scheduler opens one form, confirms a few details, and clicks once. Behind that click, Core compiles the documents and shipping labels in order, hands the appointment to SnapDocs to source a notary, tracks the SLAs,[10] and writes an audit trail. Then it watches the appointment in the background, surfacing a task only if a human is needed.
What that gave the scheduler. Before, one signing meant re-keying data, hand-assembling the document package and labels, picking a notary in a separate portal, then babysitting it. After, it's one confident pass — freeing the scheduler's attention for the few signings that actually need a person. The job stops being data entry plus monitoring and becomes judgment, only when it's called for.
The design was never really the form. It was the decision about what the human should still be responsible for — and the system that carries everything else.
Core Flows
The essential scheduling experiences.
Custom notaries
Assign a specific notary when a signing calls for one, instead of letting Core auto-source.
Draft signings
Save an incomplete signing and pick it back up later, without re-entering what’s already there.
Comm tagging
Tag emails, voicemails, and faxes to an order; they surface as tasks for the right scheduler.
Convert an active signing to a split signing
Turn a live signing into a split without unwinding and rebuilding it.
The Case
Schedulers were doing work the machine should do.
The problem was clear. The shape of the solution wasn't. I spent the first three weeks in discovery — not sketching, but building a model of how scheduling actually worked. The PM's requirements doc was bare bones (the product team was badly understaffed), so I ran background calls with scheduling associates: what they do, what they love, what they hate, and every shortcut they'd quietly invented to survive the job.
I also chased the tactical questions that decide whether a design survives contact with reality:
- What's a split signing, and how do you know a file needs one?
- How often do schedulers talk to notaries, and what's that interaction like?
- Which external vendors and SLAs are in play?
- Does the process change state by state?
Three pain points came back over and over — each one a place where Core's tasking engine could change the job.
Manual entry is slow and error-prone.
Hypothesis: Most of what a scheduler types, Core already knows.
Measured by: fields a scheduler fills by hand; entry errors per appointment.
Monitoring every signing is tedious and brittle.
Hypothesis: A human should only touch a signing when something actually needs a human.
Measured by: time spent watching healthy appointments; problems caught before they became missed closings.
Context dies in the handoffs.
Hypothesis: In a remote, assembly-line org, a date change has to carry its consequences with it.
Measured by: downstream rework after a reschedule; cross-department miscommunication.
The opportunity
Hypothesis: Scheduling is the last gate before closing — automate the tedium and the whole assembly line speeds up.
This wasn't a leap. Doma's whole company was built on a blunt observation about repetitive expert work: a person reviewing 200-page closing packages a hundred times a day gets slower and more error-prone as the day wears on, while a model gets better the more it sees. Doma had already proven it — patented models that underwrote most refinance title policies in under a minute, work that once took a week, with people kept in the loop for the roughly 20% the machine flagged as off. Scheduling was that same bet in a new corner of the business: put it inside Core and the job shrinks to the part that needs a person — judgment. The decisions that follow are how.
How We Shipped
Scope it down, validate it early, hand off something engineering can build.
The original estimate for this project was two weeks. Discovery made it obvious that was fantasy — the real number was two months — so the first thing I shipped was a more honest timeline. The rest of the discipline followed from there.
We validated before we polished. I gut-checked the early prototype with subject-matter experts — people who knew title and escrow cold — alongside PM and engineering, asking the only questions that mattered: would this survive our real process, and what am I missing? Then we ran co-design sessions with actual schedulers (a UX researcher and a literal box of Legos) — not to have them design the UI, but to watch how they ranked inputs and reasoned about edge cases. Figma prototype testing caught the edge cases I hadn't.
We scoped hard and wrote it down. Two net-new components — Signing Appointment Creation and the Signing Appointment Card — anchored the work; everything else was new flows and rearrangements of existing parts. Keeping net-new design concentrated in two places let engineering prioritize tickets cleanly. And we deferred the speculative automation.
- Auto-parsing time & date from the lender's email. Data science could likely extract it, but not reliably enough for V1 — so the scheduler still enters time and date.
- Full reliance on the SnapDocs API. A key integration assumption broke mid-project (more below), so we designed a backstop rather than bet the release on a vendor.
We handed off something buildable. The final spec was annotated for developers, walked through live, and split by the lead engineer into Jira tickets I tracked and QA'd as they shipped.
Design Decisions
Design Decisions
Pre-fill everything you already know.
Manual entry was the scheduler's biggest time sink and a steady source of errors. The obvious fix — a cleaner form — still asks the human to transcribe data the system already has.
New signing appointment · ORD-44822
Loading order data…Scheduler enters date and time — Core handles the rest
So Core pre-fills every field it can derive from the order: signing location, signing type, parties, notary preference, special instructions, even the time zone (pulled straight from the location). The only thing left for the human is the time and date. The job changes from data entry to a quick verification — the scheduler stops being a typist and becomes a checker.
Toggles, not a thousand fields.
Scheduling is a swamp of edge cases, split signings chief among them. The tempting approach is a form that anticipates every one — which collapses under its own weight. The opposite failure is a clean form that quietly can't handle the case in front of you.
New signing appointment
Signing settings
Signing information
Number of splits
Split type
Shipping address
Language preference
We put a row of toggles at the top. The scheduler — who knows the case — flips the toggle for the situation they're in, and the form contextually adds or removes the fields that matter. The complexity is there when you need it and invisible when you don't. We let the human's knowledge drive disclosure instead of trying to model every branch in a static layout.
The machine should only ask for a human when it needs one.
Schedulers spent their days monitoring healthy appointments to catch the rare one in trouble — in Looker reports, by hand. Full automation with no oversight is dangerous when a missed signing means a missed closing. Full manual monitoring is tedious and misses things anyway.
Core monitoring
SLA checks running in background
My tasks
0 openNotary unconfirmed — 6h to signing
ORD-44822 · M. Delgado · 103 Oak St · 3:30 PM
No tasks — Core is watching.
The resolution was the tasking engine. Core listens for problems in the background and surfaces a task only when judgment is required. The canonical example: it's six hours to signing and SnapDocs still hasn't confirmed a notary. Core raises a task — find a notary, or in the worst case reschedule or cancel — to a human who can actually decide. The rest of the time, no one is watching, because nothing needs watching.
A reschedule is never just a reschedule.
Change a signing date and the consequences fan out: documents regenerate, other departments have to move. In an org where most processors work remotely, that's exactly where context gets dropped — and a dropped handoff becomes a missed closing.
Signing appointment · ORD-44822
Borrower
M. Delgado
Date & time
Aug 14 · 3:30 PM
Aug 16 · 2:00 PM
Tasks triggered automatically
0 tasksWaiting for a date change…
So a reschedule doesn't just update a date. It triggers the downstream tasks automatically, routing work to the departments that need it. The design problem looked like a calendar change; it was really about making remote communication reliable without anyone having to remember to send it.
Let schedulers fix a split signing without starting over.
This one came straight from research. Schedulers often learn that a signing needs to be split only after they've already scheduled it. In Resware, fixing that meant unwinding the whole appointment by hand and rebuilding it — enormous effort, enormous coordination.
Signing appointment · ORD-44822
Original preserved — splits added without rebuilding
We designed the opposite: save the original signing and add splits onto it. The system absorbs the change instead of punishing the person for discovering it late. The happy path isn't where the work ends — and the tool shouldn't assume it is.
You can't supervise someone's kitchen table — so score who you send to it.
The entire closing comes down to one independent contractor showing up at a borrower's home and doing their one job right — and that was the part Doma controlled least. Notary signing is a largely unregulated profession,[5] and the loan hinges on how well that single person performs, often the only Doma-adjacent human the borrower ever meets.[6] A meaningful share don't perform: no-shows and last-minute cancellations that detonate a closing,[7] sloppy errors that keep a loan from funding, and — genuinely — the occasional notary who turns up to a kitchen-table signing impaired. Humans are unreliable screeners of this anyway; in one study, notaries correctly flagged identity imposters only about 72% of the time.[8]
Notary assignment · ORD-44822
0 high-risk notaries routed around automatically — A. Osei assigned
You can't manually vet every notary for every signing at Doma's volume, and you can't put a supervisor in the room. So we designed scheduling to lean on a risk signal instead of a hope: SnapDocs' notary scoring combined with Doma's own proprietary algorithm, which predicted the likelihood of a notary behaving badly. Scheduling routed around the risky ones before they were ever assigned. Rating notaries by score and blacklisting poor performers was already Doma's posture on the record;[10] scheduling made that judgment automatic, before anyone reached a borrower's door. The design problem wasn't a screen — it was the decision to treat who shows up as a scored, systematized risk rather than a coin flip, and to build the assignment flow around that score.
Assume the integration will let you down.
Our early designs leaned on the SnapDocs API behaving a particular way. Halfway through, I found out it wouldn't — and the vendor never came back to confirm whether that capability even existed.
Scheduling request
ORD-44822 · M. Delgado · Aug 16
Primary
Backstop
Automation degrades — the closing doesn't
Rather than gamble the release on a dependency I couldn't control, I designed a backstop: a path that assumes that part of the API isn't available and still gets the scheduler to a confirmed signing. The automation degrades; the closing doesn't. Designing for the integration I actually had — not the one I'd been promised — is the only reason the timeline held.
Outcome
Outcome
Zero missed closings.
We tracked missed closings before and after launch. After the module shipped, the number went to zero — for a process where a single miss can cost a borrower real money and a lender real trust.
“The best title-vendor experience they’ve ever had.”
PennyMac, one of Doma's customers, called the new experience the best they'd had from any title vendor — and pointed to scheduling specifically.
An 800% jump in order volume.
JP Morgan Chase increased order volume 800% year over year, citing the product — with scheduling among the reasons they liked it.
The associates felt it too.
The people doing the job kept saying the same thing: it's faster, and the machine anticipates the next step and passes context for them. For a tool meant to take work off their plates, that was the metric that mattered most.
Reflection
What I learned
The best interface is the one nobody has to use.
The win here wasn't a beautiful form — it was that the scheduler barely touched it. Most of the design work was deciding what the human should not be responsible for, then building the system to carry it. Designing the job down to its judgment calls was the whole point.
Design for the integration you have, not the one you were promised.
The SnapDocs assumption broke mid-project and the vendor never confirmed otherwise. The backstop is the only reason we shipped on time. Treat every external dependency as something that will fail, and design the fallback before you need it.
The happy path ends where the real work begins.
The split-signing insight only surfaced because we asked what schedulers do after they think they're done. Real workflows are full of "oh, actually—" moments. Designing for the correction is often worth more than polishing the first pass.
In a 200-year-old industry, every estimate is optimistic.
This was scoped at two weeks. Discovery alone made it clear it was a two-month project — and that was the right call. In a domain this old and this tangled, the work is always deeper than it looks, and the time spent understanding it is what makes the design hold up.
Sources
[1] Share of home closings delayed past their scheduled date (~1 in 5): National Association of REALTORS® Confidence Index, via Qualia, 2022 ↩
[2] Rate-lock extension cost to borrowers (~$500–$1,000 per 15-day extension on a $400K loan): Amerisave / industry rate-lock guidance, 2025–2026 ↩
[3] Cost of a late closing to lender NPS (57 points; 87 on-time vs. 30 late): STRATMOR Group & CFI Group research, via Qualia, 2022 ↩
[4] Manual, legacy processes and “human bridge” double-entry in title & escrow: Qualia, 2026 ↩
[5] Notary signing as a largely unregulated profession: Notary Signing Agent Code of Conduct, Signing Professionals Workgroup ↩
[6] The transaction hinging on the signing agent’s performance; often the only person the borrower meets: Notary Signing Agent certification materials, National Notary Association ↩
[7] No-shows and last-minute notary cancellations disrupting closings: 123notary / industry reporting ↩
[8] Notaries correctly identifying imposters ~72% of the time: Louisiana State University study (1,150+ notaries), via PropLogix ↩
[9] Title workforce aging and thin replacement pipeline (avg. title agent ~60; ~21% within ten years of retirement; decade-wide talent gap): American Land Title Association and industry leaders, via HousingWire, 2022–2023 ↩
[10] Doma’s own practice of scoring notaries, blacklisting poor performers, and tracking SLAs from scheduling through clear-to-close: Doma, “Six Steps to a Smooth Closing,” 2023 ↩