The contact record

One panel beside the conversation holding how to reach them, what they are buying, where it came from, and who on your team has already tried them — and two clicks to their estimate.

The operating system for post-frame and barndominium builders.

Part of The Follow-Up Machine
What it is

The panel next to the thread. Phone, email, job address, building type, source, start and due dates. The answers they gave when they first enquired. Their voicemails, recordings and photos. And chips that jump to their pipeline card and their estimate. Sections fold independently and you can drag the panel wider. And its contact history: every call — answered or not, and for how long — every text and email, and who on your team made each one. We don't build software for plumbers or remodelers — only for post-frame and barndominium builders — so the record carries the building they're buying, not a generic deal.

Also called: customer details · client file · contact card · customer record · contact history · call log

See it, piece by piece
01

The facts about the customer sit next to the conversation

Phone, email, job address, building type, source, what the deal is worth and where it stands — all on one rail beside the thread. Where a 3D design exists, the record carries a summary of the actual building, not a button that says open the estimate. Three screens to see one customer is three screens a rep will not open while somebody is on the phone. This rail sits beside the messages; the messages themselves, and the box you answer them from, are the one conversation.

Contact Details
Contact Details
MZ
Marlin Zook
Contacted
$74,300.00
Queue call
Pipeline Estimate #990214
Build estimate in 3D Builder
Phone(717) 555-0118
Emailmarlin.zook@demo.invalid
Address1840 Weavertown Rd · Gap, PA · 17527
BuildingBarndominium
SourceFacebook
Lead formSpring Barndo — Lancaster
What are you looking to build?
40×64 barndominium, 14 ft sidewalls
When do you want to start?
Spring 2027
The rail: name, stage, value, the bond chips, the core facts, then the lead form. Real screen · sample data.
Without it

He is on the phone to a man he quoted in June, clicking through the pipeline board to remember whether it was the 40×64 or the 30×40, while the man listens to him click.

Why we built it

It is a column beside the thread rather than a tab behind it, because a tab is a decision and a man on a call will not spend one. The cost is width — the rail takes three hundred pixels off the conversation — so it folds shut from its own header and drags wider by the handle, and it opens the same way every time rather than remembering a width somebody set once by accident.

02

Who reached them, which way, and how it went

Under the Timeline sits Contact history: every call with whether it was answered and for how long, every text and every email, newest first — and who on your team made each one, or whose line they rang. The line on top sums it up: 3 calls (1 answered, 4:12) · 2 texts · 1 email, and the last touch. The same history opens from the pipeline card and from Contacts, because it is one record.

Lead timeline — Contact history
Contacted2d 17h · nowMoved by Dale Whitmore
Contact history
3 calls (1 answered, 4:12) · 2 texts · 1 emailLast: they texted · 1d ago
  • They textedSounds good — I'll be out at the site Thursday morning.Sep 30, 9:41 AM
  • Called them · Answered · 4:12 · Dale WhitmoreSep 29, 4:05 PM
  • Texted them · Dale WhitmoreHi Marlin, it's Dale at Ridgeline. Tried you about the barndo quote — call back any time.Sep 29, 10:33 AM
  • Called them · No answer · Dale WhitmoreSep 29, 10:32 AM
  • They called · Voicemail · rang Dale WhitmoreSep 28, 6:47 PM
  • Emailed them · Sheila NunezYour 40×60 barndominium estimateSep 26, 3:18 PM
Marlin: Dale's 4:12 call was answered, the 10:32 attempt was not, and Sheila sent the estimate. Real screen · sample data.
Without it

A customer says nobody called him back. Your rep says he called twice. Neither of you can prove it.

Why we built it

Proof of effort ends the did anyone call him argument in one glance — and reps like being seen doing the work. The quiet rep who makes fourteen calls a day finally gets credit for it, and the owner can coach on facts instead of hunches.

Sound familiar?“I have to click into three screens to see one customer”
03

Every list says who has already tried

Each Contacts row — and each sales card — carries a short strip: the calls and how many were answered, with the talk time, the texts, the emails, and the last touch with who made it (called · no answer · Dale · 2d ago). A row with no strip is a person nobody has reached out to yet, and on a long list that stands out on its own.

Contacts — who has tried, on every row
AllUnread (2)SMSEMAIL
MZ
Marlin Zook1d
31 answered · 4:1221Last: they texted · 1d ago
Sounds good — I'll be out at the site Thursday morning.
DB
Danielle Beiler3h
2none answered1Last: emailed · Sheila · 3h ago
Your 40×64 post-frame quote
CH
Curtis Hoover1d
1none answeredLast: they called · voicemail · 1d ago
Voicemail from (717) 555-0132 - 0:24
RP
Rosalyn Petersheim2d
42 answered · 11:383Last: texted · Marcus · 2d ago
Can we move the overhead door to the gable end?
WF
Wendell Fisher
Equipment Storage
Wendell has no strip — nobody has tried him. Rosalyn has been reached twice, for 11:38. Real screen · sample data.
Without it

A list of names says nothing about which of them anybody has actually got through to.

Why we built it

The eye goes straight to the empty rows, so the person nobody has called gets called — without a report, a meeting, or anyone feeling singled out. For the business that is fewer leads that die of silence.

04

The job address is kept as street, city, state and zip

One line of free text has to be guessed back apart, and a guess here quietly puts a building in the wrong jurisdiction — which shows up as a failed inspection, not a typo. Four separate boxes mean the permit lookup, the crew's drive and the delivery all read something clean. Anyone can add or fix it in seconds instead of waiting for a lead form to have collected it.

Permit Check — on the opportunity
Permit Checkpermitting by jurisdiction — don’t quote on a guessHide
1470 Sawyer Ridge Rd, Millbrook, MO, 65203MapBothText
FilterMissouriKessler CountyMillbrookResetAllRoadsBorders
Building permit REQUIRED in City of Millbrook.
Typical permit cost (40×60 / ~$45k): $980 – $1,240
City of Millbrook, MOMEDIUM
Permit requiredyes
Review time10–15 business days
AuthorityMillbrook Building & Zoning Division
Decision-support only — not a permit determination. Always confirm with the local authority before quoting.
The permit check reading city and state straight off the record. Real screen · sample data.
Without it

"1840 Weavertown Rd Gap PA" gets read as the wrong county, the permit is filed there, and the crew finds out the morning of the pour.

Why we built it

The four parts are stored apart because everything downstream reads them apart — the permit check matches city and state against a jurisdiction table. Parsing one typed line back into four would be guessing on the customer's behalf. It costs four taps instead of one, and buys a lookup that never has to interpret anything.

Sound familiar?“the contact record doesn't tell me anything about the actual build”
05

What they said they wanted, on the screen where you ring them back

The questions and answers from the form that made them a lead sit on the contact, with the ad and the campaign beside them. Ringing a lead back without knowing what they asked about wastes the first thirty seconds of the only conversation you are going to get. The answers come off the branded form on your own site, a Facebook lead ad, or an import — and they read the same either way.

The form they filled in, on the card
Lead form
Primary use
Shop with living quarters
Budget range
$125k – $200k
Site address
5719 Pine Grove Rd, Columbia, MO
Do you own the land?
Yes
Size you have in mind
30′ wide × 40′ long, 12′ eave
What are you building?
Barndominium
Will you need financing?
Not sure
When do you want it built?
Next 3–6 months
Ad source
form Website — Request a quote
What they typed, question by question, with the ad source underneath. Real screen · sample data.
Without it

He rings back and opens with "so, what were you after?" — the man already typed it, three weeks ago, into the form that cost forty dollars to get him to fill in.

Why we built it

The answers are written onto the contact at intake rather than fetched from the form provider when somebody opens the record. That costs a copy of the data, and buys answers that are still there in March after the ad is switched off and the form has been rewritten twice.

06

What the man is buying, without opening the estimate

Where a 3D design exists, the record carries a card: 40′ × 64′, 14′ eave, 2,560 sq ft, two overhead doors, four windows, a 4″ slab — and the price. The total comes from the same function the pipeline card and the estimate list read, so the three cannot disagree. Where there is no design yet, the card is replaced by a button that starts one in the 3D builder.

Your Custom Building

Your Custom Building

Dimensions
40' wide x 60' long x 14' tall
Square Footage
2,400 sq ft
Roofing System
48" on center pre-engineered trusses with a 4/12 pitched roof.
Support Structure
8' on-center laminated columns
Siding
29 ga wall steel
Roofing
29 ga roof steel.
Overhangs
12" boxed overhangs
Openings
(2) 12' x 14' overhead doors, (1) 3' x 6'8" walk door, (3) 3' x 4' windows
Concrete slab
4" concrete pad with 24" rebar spacing
Attached buildings/porches
12' x 40' lean-to porch, open
Roof Steel
Burnished Slate
Wall Steel
Light Stone
Trim
Brite White
Window Color
Whitechange
Door Color
Brite Whitechange
Garage Door Color
Almondchange
Changing the window, door, or garage door color may affect pricing. Reach out to your sales rep for current color pricing.
Delivery Address
5719 Pine Grove Rd, Columbia, MO 65201
Size, eave, pitch, openings, slab — the facts the record's card repeats. Real screen · sample data.
Without it

He opens the Estimates tab to remember whether the man had two overhead doors or three, and by the time he is back the customer has asked something else and he is on the back foot.

Why we built it

Every fact on the card is read off the design spec rather than typed onto the contact, so it can never describe a building the estimate is not actually pricing. The trade-off is that a contact with no design gets no card at all — an empty card, or one filled in by hand, is worse than a button.

Sound familiar?“where do I find what they asked for”
07

Two clicks from a text message to that customer's estimate

Chips on the record move you between the contact, their pipeline card and their estimate. One person, three views, all reading off the same record so they cannot disagree. Where there is no pipeline card yet, the chip turns into Send to Pipeline and makes the link right there — in the place you noticed it was missing. What that card does once you land on it — the stage it sits in, the checklist riding with it, the money it adds to the column — is on the sales pipeline board.

Lead card
Emma Carter$385,000.00
Barndo$385kFacebook ad
0/6
Confirm
CallTextEmail
Sep 15 · 9:12 AMDaniel Hayes1d 3h 22m
Where the Pipeline chip lands — same person, same record. Real screen · sample data.
Without it

Three surfaces hold the same customer and nobody can say which is right, so the quote says $74,300, the card says $68,000, and he has been told both.

Why we built it

The Estimate chip only appears when an estimate actually exists. It used to appear whenever we knew the person, on the theory that landing on a list beat a missing button — in practice it promised something that was not there. A chip means "this exists, go to it", and a chip pointing at a view the man's role cannot open is not drawn at all.

08

A phone or an email you can add while the customer is still on the line

Both rows are always there and always editable, even when empty. Click, type, Enter. They used to disappear when blank — so a contact with no number had no Phone row and no way to add one. You found out when the text confirming tomorrow's site visit failed to send. The number saves where you type it, and the phone can dial it a second later.

Phone — Keypad
Phone
RecentsContactsKeypadVoicemailQueue3
7175550118
Marlin Zook
123456789*0#
Call

They’ll see (717) 555-0100

Phone and Email — always present, click to edit, even when empty. Real screen · sample data.
Without it

The number goes on a sticky note because there was nowhere on the screen to put it, and the confirmation for tomorrow's site visit never sends.

Why we built it

Filtering blank rows out is tidy and wrong: the contact who most needs a number is the one who has none. Rendering the row empty makes the gap an invitation instead of an absence — blur or Enter commits, Escape abandons, and there is no Save button to forget on the way out of the call.

09

Line up tomorrow's calls without leaving the record

A contact with a number carries Add to call queue on the record itself. Working down a list deciding who to ring tomorrow is a real pass through this screen, and it used to have no way of doing it — the queue could only be filled from the phone dock. The call button opens the phone, and dialling, mute and hang up are all covered over there.

Phone — Queue
Phone
RecentsContactsKeypadVoicemailQueue3
Clear all (3)
Curtis Hooverurgentmissed call
Missed call · left a voicemail
Wants a price on a 30×40 lean-to before the weekend.
CallDone
Rosalyn Petersheimhigh
Follow up with Rosalyn Petersheim
CallDone
(717) 555-0166missed call
Missed call · no answer
CallDone
The queue that button fills — every call still owed. Real screen · sample data.
Without it

Six people to ring back, remembered in whatever order he happened to scroll past them, and the one who left a voicemail on Friday is still waiting on Wednesday.

Why we built it

The affordance is put where the decision is made, not where the dialling happens. A queue you can only fill from the dialler asks the man to hold four names in his head while he walks to another screen, and he will hold two.

Sound familiar?“I don't know if anyone actually called this customer back”
10

You find out they opened it without leaving the record

Try it

Every estimate sent to this person is listed on the record with what it did — Sent, Opened, Approved — grouped by project with a version number where there is more than one. How long they spent on it, and how many times they came back, is on the estimate itself.

Status checking
Miller Road 40×60 ShopChecking status…
The lookup is in flight for about a second. It never says “Send Estimate” in that second.
Without the guard
Send Estimate— on a quote that went out last week.
Checking, then Opened — a status read live, not remembered. Real screen · sample data.
Without it

He rings to chase a quote the man approved on Sunday night, and the call opens with an apology instead of a start date.

Why we built it

The status is fetched when the record is opened rather than stored on the contact, so an approval that happened on the customer's phone at nine at night is not still reading Sent at nine the next morning. It costs a request every time the panel loads; it buys a status nobody has to distrust.

11

Two records for one man, found by number, not by name

The same email or the same phone in the same bucket is grouped as a duplicate, with the count sitting on the toolbar where you add contacts. Merging keeps the fuller record: non-empty fields win, blank ones fill from the other, the notes, tasks and estimates that hung off the other copy are re-pointed at the survivor, and the further-along of the two stages is the one that is kept.

Duplicate Leads
Duplicate Leads
10 groups detected. Merge a duplicate into the primary you want to keep.
Match by phone   7175550111
Keep as primary:
Emily Wenger
emily.wenger7@demo.invalid · (717) 555-0111
pm_kickoffsrc: ReferralSB #99000732024
Nicole Groff
nicole.groff8@demo.invalid · (717) 555-0111
contract_signedsrc: Website Form43302
Merge into Emily Wenger:Merge “Nicole Groff”
The groups, matched on email or phone, with what a merge would keep. Real screen · sample data.
Without it

Two Marlin Zooks — one holds the quote, one holds the texts — and the reply goes into the thread he never sees.

Why we built it

Numbers are normalised with the country code in mind, so a ten-digit and an eleven-digit copy of the same line group together — the old last-seven-digits match missed those and falsely joined two different people in different area codes. Matching is scoped per bucket on purpose: the same man as a team member and as a supplier is deliberate, not a mistake to merge.

Sound familiar?“who on my team talked to him last”
12

A supplier's record does not look like a customer's

One screen holds Contacts, Team, Leaders, Members, Suppliers, Contractors and Tasks, each with its own count — and the panel changes with the bucket. A supplier opens on their purchase orders where a customer opens on their build. A man can sit in two buckets at once: Also a supplier on the record's menu puts him in both without making a second copy of him.

Supplier order — PO-1042
PO-1042SentShort / damaged
Kessler Building Supply · due 9/8/2026 · originally 8/28/2026
Report a delayReceive this order
Ordered 654Received 617Missing 31Damaged 6Total $18,430
Sent
Paid
On the way
Arrived
Short / damaged
Claim sent
Settled
Complete
A supplier's panel — their orders where a customer's build would be. Real screen · sample data.
Without it

The lumber yard lives in a spreadsheet, the framing sub lives in somebody's phone, and the only place all three ever meet is the invoice at the end.

Why we built it

One list rather than four address books, because the yard selling you posts is the same shape of record as the man buying the building — a name, a number, a history. The bucket only decides which panel opens beside the name, which is why the same person can be in two of them without the duplicate finder treating it as a mistake.

13

'fb ad' and 'Facebook lead' stop looking like two different sources

Where a lead came from arrives in a dozen spellings from forms, imports and typing. Each one is matched to a single brand mark, so you can scan a list of leads and see where the work is coming from. A source nobody recognises keeps its own words beside a plain grey dot — it is never hidden from you.

Sales Pipeline
New Lead8
$576,000.00
Paige Kauffman$72,000.00
Barndominium
Barndo
Marcus Feld
$72k
Home Show(717) 555-0104
0/2
Permit required · Columbia
Aug 5, 2026STALE
›3Contacted
›2Create Estimate
›5Estimate Sent
›4Estimate Approved
›2Info Submitted
›7Contract Sent
›4Co-sign Pending
›3Ready to Start
The Source row: one mark, and the words the lead actually arrived with. Real screen · sample data.
Without it

The month-end count says Facebook brought nine leads. It brought twenty-two — the other thirteen were spelled differently.

Why we built it

The logo comes from the brand, the words come from the data. Matching is fuzzy on keywords so "fb ad", "Facebook lead" and "Facebook ads" all resolve to one mark — but the label stays the original text, because collapsing "Facebook ads" to "Facebook" would quietly turn a paid lead into an organic one on the screen.

Sound familiar?“my reps say they called but I can't see it”
14

How long this person has been waiting, in hours

A Timeline shelf on the record carries every stage move and every step inside it, with who and when — time in the platform, time in the current stage, and hours from created to first contact. Notes, tasks, documents, payments and the calendar sit on the same rail, and every note about the person, whoever wrote it and wherever they wrote it, is one stream. The voicemails, the recordings and the photos that collect against a person play in the one conversation rather than on this rail.

Timeline
Timeline

Same audit history as the pipeline card — every stage move and SOP step, with who and when.

In platform
9d 3h
since Aug 17, 2026
Current stage
1d 18h
Create Estimate
To first contact
7h 36m
created → contacted
New Lead2d 4h
Aug 17, 9:02 AM → Aug 19, 1:15 PM · moved here by Marcus Feld
  • Assign an ownerAug 17, 9:04 AM
  • Make first contact — call, text, or emailAug 17, 4:38 PM
Contacted5d 2h
Aug 19, 1:15 PM → Aug 24, 3:20 PM · moved here by Marcus Feld
  • First contact attemptAug 19, 1:31 PM
  • Follow-up 1Aug 21, 8:40 AM
  • Follow-up 2not completed
  • Add to short-term nurture(optional)not completed
Create Estimate· current1d 18h
Aug 24, 3:20 PM → now · moved here by Dale Whitmore
  • Estimate draftedAug 24, 4:02 PM
  • Verify SmartBuild takeoffopen
  • Confirm markup / priceopen
  • Internal review(optional)open
Time in platform, time in stage, hours to first contact — then the journey. Real screen · sample data.
Without it

"When did we last speak to him?" gets answered from memory, and the honest answer is nineteen days.

Why we built it

It is the same audit history the pipeline card shows, read out of the same log rather than recomputed here. Two surfaces telling different stories about how long a lead has been sitting is how a rep learns to trust neither, so there is only ever one story and this is a second window onto it.

15

What this person has personally signed, on this person

Contracts this contact signed themselves are listed on the record and open the same document everywhere else opens — a crew leader's acceptance of a job, a sub's agreement, the project agreement. The section is drawn even when it is empty, so "no signed contracts" is a stated fact rather than a missing heading.

Signed acceptance record
Print / Save PDF
PROJECT ACCEPTANCE AGREEMENT
Signed and witnessed electronically · Agreement v2
Project
NameWenger 40×60 Shop
CustomerDwight & Ruth Hostetler
Phone(717) 555-0104
Address1180 Mill Creek Rd, Bird-in-Hand
Building Type40×60×16 Post-Frame Shop
Assigned CrewCrew B
Signer
Full NameMarlin Zook
Emailmarlin@stonebridge.demo.invalid
Phone(717) 555-0143
Rolecrew lead
Signed AtSep 8, 2026, 7:12 AM
IP Address203.0.113.47
Agreement Terms
PROJECT ACCEPTANCE AGREEMENT I, the undersigned crew lead, am signing this agreement personally — not on behalf of any other person — and I accept the project assignment described in this document under the following terms: 1. PERSONAL COMMITMENT I personally commit to completing Wenger 40×60 Shop for Dwight & Ruth Hostetler according to the project plan, schedule, and quality standards established by the company. 2. LABOUR The labour figure for this project is $14,420.00, as agreed on September 8, 2026.
Typed Signature
Marlin Zook
Signed
Sep 8, 2026, 7:12 AM
Drawn Signature
Signed
Sep 8, 2026, 7:12 AM
Audit Trail
User AgentMozilla/5.0 (iPhone; CPU iPhone OS 18_2 like Mac OS X) AppleWebKit/605.1.15 Safari/604.1
Signature IDc1f0a6e2-4d31-4a9c-9f21-88b0d4e7a115
Assignment ID7b4e19c8-2a55-41d0-b6ef-3d9a2c70f884
This document is a legally binding electronic record under applicable e-signature law. Any modification of this record renders it invalid.
One signed acceptance, opening the same document the job opens. Real screen · sample data.
Without it

Nobody can find the acceptance the crew leader signed in April, so the job runs on everyone's memory of what he agreed the day rate was.

Why we built it

Empty sections are hidden almost everywhere else on this rail — a contact with no voicemails should not carry a Voicemails header. Contracts is the deliberate exception, because the absence of a signature is itself the answer somebody came to this screen to get, and a hidden section reads as a missing feature rather than a missing signature.

How it works
  1. 1Open a customer and the facts sit beside the conversation.
  2. 2Click any field to fix it — phone, email, address — and it saves where you type.
  3. 3Where a 3D design exists, the record shows what they are actually buying, not a button.
  4. 4Fold the sections you don't use and drag the panel to the width you like.
  5. 5Contact history sits under the Timeline: calls with whether they were answered and the talk time, texts, emails, newest first, and who made each one
  6. 6Every Contacts row and sales card carries the same short strip — how many calls and how many answered, texts, emails, and the last touch
Why we built it

The contact details said nothing about the build itself — just a link to open the estimate. So a rep on the phone with a homeowner had to leave the conversation to remember what the man was buying. By the time he got back, the customer had asked something else and the rep was on the back foot. Now one panel holds the lot, sitting beside the messages instead of behind a tab.

The problem
  • Customer facts split across CRM, estimate and pipeline
  • Needing to open the estimate just to remember what the building is
  • No record of who reached a customer, which way, or whether they got through
What you get
Everything about a person on one rail beside their messages
Jump to the estimate or pipeline card without hunting
See at a glance who has tried a customer, how, and whether anyone got through
Built only for post-frame and barndominium builders — the record knows the building, not just the person
What's inside
Phone and email you can add or fix on the spot

The two rows that matter for reaching someone are permanent. They do not vanish when they are empty; an empty one reads Add phone. Click the value and it turns into a box. Enter saves. Escape throws it away.

The job address, kept in parts

The address sits with phone and email as something anyone can fix in seconds, edited the same way. It is stored as four separate boxes, not one line of free text.

What they answered when they became a lead

Everything they typed when they enquired — the size they wanted, the timeline, the budget — reads as question-and-answer rows on the record. Beside it, small chips for where it came from: the source, the campaign, the form, the page.

Where the lead came from, shown as the real logo

Where a lead came from arrives in a dozen spellings from forms, imports and typing. Each one is matched to one proper mark — Facebook, Instagram, Google, LinkedIn, TikTok, YouTube, Angi, Zillow, website, referral, typed in by hand, imported. Anything unrecognised keeps its own wording beside a plain grey dot.

Jump between the contact, the card and the estimate

A small row of chips that moves you between the contact, the pipeline card and the estimate, leaving out whichever one you are already looking at. Where there is no pipeline card yet, the chip becomes Send to Pipeline and makes it right there. The same chips sit inside the phone dock, so a call leads straight into the job.

The same history on the contact and the card

The Activity panel on the contact shows the same history the pipeline card shows. Stage moves, system events and audit notes — kept out of the chat thread on purpose and shown here instead, so the conversation stays a conversation.

One phone number, however it was typed

One rule, used everywhere a number matters: matching an inbound text to a customer, routing a call, spotting duplicates, logging a callback. Punctuation and a leading country code come off. Under seven digits and it will not claim a match — better no match than the wrong person.

CONTACTS

See the contact record
on one of your own jobs.

Twenty minutes, your building, your numbers. Bring the job where “I have to click into three screens to see one customer” — we will show you exactly where that stops.

leads2build.com
Materials staged on site
Contact Details
Contact Details
MZ
Marlin Zook
Contacted
$74,300.00
Queue call
Pipeline Estimate #990214
Build estimate in 3D Builder
Phone(717) 555-0118
Emailmarlin.zook@demo.invalid
Address1840 Weavertown Rd · Gap, PA · 17527
BuildingBarndominium
SourceFacebook
Lead formSpring Barndo — Lancaster
What are you looking to build?
40×64 barndominium, 14 ft sidewalls
When do you want to start?
Spring 2027
The contact record — Leads2Build