Connections and data sources

Where every piece of data comes from, how it gets in, and where it breaks.

How data flows

1. Comes in

Messenger, voice notes, receipt photos, supplier emails, Shopify payments, Alex tapping.

2. Drafted

AI for messy input (text, speech, photos). Rules for structured input (payments, dates, math).

3. Alex confirms

Plain-words card in the Inbox. Confirm, edit, or dismiss. AI never writes to the database itself.

4. Saved

His Postgres database. Every change in the audit log with before and after.

5. Shows up

Dashboard lists: follow-ups due, quotes waiting, open orders, incoming. All plain code.

Badge legend

Turn on Data sources in the menu to see these next to every value. Tap one for details.

Alex Alex types or taps it in the app.
Calc Plain code works it out from other data. No AI, always the same answer.
AI AI drafts it from a message, voice note or photo. Alex confirms before it is saved.
Meta Arrives from Messenger or the Meta Ads API.
Shopify Pulled from Shopify / Shop Pay payments.
QuickBooks Synced with QuickBooks expenses.
Photo Taken with Alex's phone camera.
Supplier From a supplier portal or order confirmation email.
Excel One-time import from Alex's Excel sheets, then edited in Settings.

Each source

Facebook Messenger Meta
Not built (interface only)
Fills
Customers, leads, interactions, his own copy of every conversation
Gets in by
Meta sends each new Page message to the app through a webhook. Needs a Meta developer app on Alex's Page with messaging permission (check Meta's docs for the exact permission and review).
AI's job
Reads the thread and proposes lead fields: seats, size, style, chairs, buying reason. Can draft a first quote.
Cracks
  • Messenger gives a name, not a phone or email. Matching to Shopify payments later is hard.
  • Old conversations from before the connection won't come in.
  • Messaging window: 24 hours normally. The 7-day window for ad-started chats is UNVERIFIED.
  • Meta app review may be needed even for a single Page.
Meta Ads Meta
Not built (manual campaign entry for now)
Fills
Campaigns: name, creative, dates, spend. Which ad a lead came from.
Gets in by
Daily pull from the Marketing API. The ad a chat started from comes with the first webhook message (referral data, check docs).
AI's job
None. Spend and cost per lead are plain math.
Cracks
  • If the referral data isn't on the message, leads can't be tied to a specific ad.
  • Cost per sale needs leads linked to orders, which depends on Alex confirming leads.
Phone calls and voice notes AI
Not built
Fills
Interactions, quote revisions, order changes
Gets in by
Alex taps record in the app after a call and talks. Speech-to-text in the browser, or a hosted model behind the AI adapter.
AI's job
Turns "drop the bench, make it 7 ft" into a proposed quote v3 or order change, in plain words, for Alex to confirm.
Cracks
  • Calls happen in the phone app, so nothing records automatically. Alex has to remember to tap record.
  • Today his notes go into the phone's notes app. He has to switch habits.
Shopify / Shop Pay Shopify
Not built (manual payment entry for now)
Fills
Payments: deposit, final, date, method
Gets in by
Shopify webhook when an order is paid, or a daily pull from the Admin API.
AI's job
None. Matching is rules: email, amount equals deposit or balance, open order.
Cracks
  • How does Alex take deposits today: Shopify invoice, draft order, or a product checkout? This decides how easy matching is.
  • Customer email in Shopify may not match anything from Messenger.
QuickBooks QuickBooks
Not built
Fills
Purchases and expenses (or the other way round)
Gets in by
QuickBooks Online API with OAuth. Direction is an open question: this app pushes purchases to QuickBooks, or QuickBooks is the source and he tags jobs here.
AI's job
None for syncing. AI only helps upstream (reading receipts).
Cracks
  • Direction unknown. Whichever way, there must be one entry point or he double-enters.
  • Mileage tracking lives only in QuickBooks.
Whitewood Industries (chairs) Supplier
Not built (manual entry for now)
Fills
Chair purchases, order numbers, expected delivery dates
Gets in by
No known API. Alex forwards the confirmation or shipping email (or a screenshot of the portal).
AI's job
Reads the email or screenshot and proposes the purchase, lines and expected date.
Cracks
  • Emails go to Alex's inbox. Forwarding is a habit he has to form.
  • Chairs ship to a family member's commercial shop, so "received" happens somewhere else.
Kokomo sawmill (wood) Photo
Not built (manual entry with photo upload in scope)
Fills
Wood purchases with receipt photo
Gets in by
Alex snaps the paper receipt with the phone camera.
AI's job
Reads the receipt, drafts the purchase and lines, suggests the open job that uses that wood.
Cracks
  • Handwritten receipts may read badly.
  • He keeps wood for 1 to 2 jobs and reuses scraps, so per-job wood cost is approximate.
Phone camera Photo
In scope
Fills
Order progress photos, receipts
Gets in by
Upload from camera or gallery in the browser. Stored on disk behind a file storage interface.
AI's job
Optional later: caption photos, pick website-worthy shots.
Cracks
  • Alex does not want to send build photos to customers. These stay private unless flagged for the website.
Excel quote sheet Excel
Waiting on the sheet
Fills
Styles, price options, costs, size pricing
Gets in by
One-time import, then edited in Settings. The spreadsheet retires.
AI's job
None.
Cracks
  • Not received yet. All option prices in the app are placeholders.
  • How size changes price, base and leg options, sales tax and delivery rules are all unknown.
Production tracker sheet Excel
Waiting on the sheet
Fills
Current open orders
Gets in by
One-time import of current rows into Orders.
AI's job
Could tidy messy rows into stages and dates for Alex to confirm.
Cracks
  • Alex says it isn't kept up to date, so imported data needs checking.