SMS Types

Every message is classified into one of three types before we process it. That keeps Harmonize in scope: we only log data and answer questions that can be answered from your sheet.

The three types

LOG

The message is an update you want stored—e.g. a harvest entry, a sale, an expense. We parse it, map it to your sheet columns, and append a row. You get a short confirmation (e.g. "Got it") and the data appears in your connected sheet.

Examples: "Harvested 50 lbs tomatoes from Block A", "Sold 2 dozen eggs $8", "Spent $120 on fertilizer."

DATA_QUERY (Query)

The message is a question that can be answered from your logged data. We run a query against your connected sheet(s) and reply with the result (e.g. a number, a list, or a short summary). We do not answer questions that require advice, analysis, or information outside your sheet.

Examples: "How many harvest entries this week?", "Total sales yesterday?", "Average weight per harvest?", "Top crop this month?"

If you ask something we can't answer from your data (e.g. "Why are my yields low?" or "Should I raise prices?"), we classify it as OTHER, not Query, and send the same boundary reply as for greetings.

OTHER

The message is not a log and not a question we can answer from your data. Examples: greetings ("Hi", "Hello"), thanks, general chat, or advice-seeking questions. We do not parse or query these. We send a single, short boundary message (e.g. "I'm built for logging and querying your sheet data. Send an update or ask a question about your data.") and mark the message complete. No row is written; no query is run.

Some obvious phrases (e.g. "hi", "thanks") are handled even earlier in the pipeline with the same boundary reply and don't create an SMS record—so they never appear in your dashboard.

Why this matters

Harmonize is designed as a CLI over text: you send commands (log this, answer this query), and we respond with results. We avoid acting like a conversational AI—no personality, no open-ended advice, no multi-turn chat. Sticking to LOG and DATA_QUERY keeps expectations clear and costs predictable.

In the dashboard

On the dashboard you can see how each message was classified: Log, Query, or Other. For Other messages we may show the reply we sent. For failed messages we show the error so you can troubleshoot.

Related