powered by AYT Consulting
Nobody did anything wrong. The crew texted the way they always text. But every one of those messages was a number nobody wrote down — until Frankie read them.
Real crews don't fill in forms. They text — fast, with photos, voice notes and PDFs. Frankie reads all of it.
| event_id | source_msg_id | event_type | entity | qty | scope | variance_usd | conf |
|---|---|---|---|---|---|---|---|
| EV-0091 | wa_msg_1142 | scope_change | feeder_replacement | 2 | 0 | +16.0 hrs | 0.94 |
| EV-0092 | wa_msg_1147 | change_order_verbal | circuit_add_garage | 2 | 0 | 1,100.00 | 0.91 |
| EV-0093 | wa_msg_1153 | material_purchase | conduit_emt_3/4 | 200 | 140 | 84.00 | 0.97 |
| EV-0094 | wa_msg_1154 | material_purchase | breaker_20a | 3 | 0 | 212.00 | 0.89 |
| EV-0095 | wa_doc_1159 | supplier_invoice | graybar_88213 | 3 | — | 146.00 | 0.95 |
| EV-0096 | wa_audio_1171 | delivery_short | line_items_missing | 2 | 5 | 190.00 | 0.78 |
| EV-0097 | wa_msg_1178 | permit_standby | rough_in_inspection | 1 | — | — | 0.72 |
| EV-0098 | NULL | unmatched_po | unknown_vendor | NULL | NULL | NULL | flagged |
Loose text, a photo, a voice note and a PDF — all of it lands as clean, queryable rows. Row EV-0098 is the one that matters most: a PO with no matching invoice. Frankie doesn't guess a number and roll it into the total. It writes NULL and raises its hand.
No app for the crew to learn. No forms. No new logins. They text the way they've always texted — photos, voice notes, half-sentences, whatever's fastest with gloves on. Frankie reads it, structures it, and prices it. Every figure on the right traces back to a specific message on the left, and when the data isn't there, it says so instead of guessing. That's the whole product.
20 minutes. No pitch deck. We map exactly how your jobs get quoted, staffed and invoiced — and show you what Frankie would catch. Free, no commitment.