<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>OwlAI Blog</title><link>https://owlai.cloud/blog/</link><description>Questions we met building AI for work</description><language>en</language><item><title>ChatGPT is brilliant. So why can&#x27;t it do your company&#x27;s work?</title><link>https://owlai.cloud/blog/insight/1/</link><guid>https://owlai.cloud/blog/insight/1/</guid><category>Insights</category><description>Ask a general-purpose AI service, &quot;What were sales at each of our branches this month?&quot; and the answer comes back in seconds. The prose is smooth, and it even draws a table.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Inventory right now: does the AI chatbot know today&#x27;s count?</title><link>https://owlai.cloud/blog/insight/2/</link><guid>https://owlai.cloud/blog/insight/2/</guid><category>Insights</category><description>A sales rep asks the company&#x27;s AI chatbot, &quot;How many units of product A do we have in stock right now?&quot; The chatbot finds the inventory report posted at the end of last month and answers with the number in it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Data scattered across systems: can AI gather it in one pass?</title><link>https://owlai.cloud/blog/insight/3/</link><guid>https://owlai.cloud/blog/insight/3/</guid><category>Insights</category><description>&quot;Pull the accounts more than 90 days overdue this quarter that our policy says go to collections, and group them by account manager.&quot; Sales operations teams get requests like this all the time.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The AI&#x27;s SQL runs fine. Why is the revenue number wrong?</title><link>https://owlai.cloud/blog/insight/4/</link><guid>https://owlai.cloud/blog/insight/4/</guid><category>Insights</category><description>The demo is impressive. Ask for &quot;the five best-selling products last month,&quot; and the AI writes the SQL (the language for querying databases) and returns the right answer at once.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Departments count revenue differently. Whose number will the AI use?</title><link>https://owlai.cloud/blog/insight/5/</link><guid>https://owlai.cloud/blog/insight/5/</guid><category>Insights</category><description>At the executive meeting, the sales division reports that revenue grew 12%, and the finance team says 8%. Neither is wrong.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Put AI on the production database, and security asks three questions</title><link>https://owlai.cloud/blog/insight/6/</link><guid>https://owlai.cloud/blog/insight/6/</guid><category>Insights</category><description>When someone proposes connecting AI to a business database, the DBAs and the security team raise the same three questions. What if the AI deletes data by mistake?</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Report preferences you repeat every time: can AI remember them?</title><link>https://owlai.cloud/blog/insight/7/</link><guid>https://owlai.cloud/blog/insight/7/</guid><category>Insights</category><description>Each time you ask an AI for a report draft, you attach the same conditions: &quot;No more than three tables, conclusion first, amounts in millions of won.&quot; Ask it to find your tickets in the company issue…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Only the old hand knew the data rules. Will the AI still know them?</title><link>https://owlai.cloud/blog/insight/8/</link><guid>https://owlai.cloud/blog/insight/8/</guid><category>Insights</category><description>Every company has a veteran who knows the traps in its data. &quot;Amounts in that table were in thousands of won until 2023.&quot; &quot;Status code 09 isn&#x27;t cancelled.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Criteria agreed in an earlier chat: can AI pick them up again?</title><link>https://owlai.cloud/blog/insight/9/</link><guid>https://owlai.cloud/blog/insight/9/</guid><category>Insights</category><description>Last week you spent a long conversation with the AI working out how to look up receivables by customer. Today you need a similar number, and you can&#x27;t remember where that conversation went.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The account is locked. Does the AI still remember what they told it?</title><link>https://owlai.cloud/blog/insight/10/</link><guid>https://owlai.cloud/blog/insight/10/</guid><category>Insights</category><description>A sales rep has left your company.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Wide-ranging research: can AI cover it without missing parts?</title><link>https://owlai.cloud/blog/insight/11/</link><guid>https://owlai.cloud/blog/insight/11/</guid><category>Insights</category><description>&quot;Summarize e-payment regulation trends in three Southeast Asian countries and where the major competitors stand in each market.&quot; Whoever gets this request spends several days on it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Numbers for a report: can you trust the sources AI cites?</title><link>https://owlai.cloud/blog/insight/12/</link><guid>https://owlai.cloud/blog/insight/12/</guid><category>Insights</category><description>You&#x27;re about to paste market data the AI summarized into a report when your manager asks, &quot;Where&#x27;s this number from?&quot; You ask the AI, and it names a plausible institution and a report title.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Could AI take over the weekly report end to end?</title><link>https://owlai.cloud/blog/insight/13/</link><guid>https://owlai.cloud/blog/insight/13/</guid><category>Insights</category><description>Every Monday morning, someone on your team does the same job. They pull last week&#x27;s sales, split it by region, work out the change from the week before, build an Excel report and send it around.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The AI wrote the document. Why paste it into the company template?</title><link>https://owlai.cloud/blog/insight/14/</link><guid>https://owlai.cloud/blog/insight/14/</guid><category>Insights</category><description>Ask an AI for this month&#x27;s quote and the content arrives fast. What you get back, though, is text in a chat window or a document the AI styled however it liked.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Why does the AI forget your opening conditions as the chat grows long?</title><link>https://owlai.cloud/blog/insight/15/</link><guid>https://owlai.cloud/blog/insight/15/</guid><category>Insights</category><description>You have spent an hour going through quarterly results with an AI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Remembered one more condition? Must the AI answer start over?</title><link>https://owlai.cloud/blog/insight/16/</link><guid>https://owlai.cloud/blog/insight/16/</guid><category>Insights</category><description>You send &quot;Put last quarter&#x27;s sales by region into Excel,&quot; and the moment it&#x27;s gone you remember: online sales should have been left out. A typical AI chat gives you two ways out.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Tens of thousands of orders: does AI really read them all?</title><link>https://owlai.cloud/blog/insight/17/</link><guid>https://owlai.cloud/blog/insight/17/</guid><category>Insights</category><description>You ask an AI to look through this year&#x27;s orders and find anything unusual.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Minutes keep getting in-house terms wrong. Must you fix them by hand?</title><link>https://owlai.cloud/blog/insight/18/</link><guid>https://owlai.cloud/blog/insight/18/</guid><category>Insights</category><description>A meeting ends and you open the minutes that were written automatically.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Could AI turn a meeting transcript into usable minutes?</title><link>https://owlai.cloud/blog/insight/19/</link><guid>https://owlai.cloud/blog/insight/19/</guid><category>Insights</category><description>You recorded an hour-long meeting and got it transcribed. What you have now is dozens of pages of text.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>AI is sometimes wrong. Can it handle work involving customer data?</title><link>https://owlai.cloud/blog/insight/20/</link><guid>https://owlai.cloud/blog/insight/20/</guid><category>Insights</category><description>AI evaluations for work usually end on the same question: the performance is clear, but can we really trust it with this? AI runs on probabilities.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>You want the newest AI models. The customer data can&#x27;t leave.</title><link>https://owlai.cloud/blog/insight/21/</link><guid>https://owlai.cloud/blog/insight/21/</guid><category>Insights</category><description>A sales rep pastes a customer list into an AI and asks it to tidy things up.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>A hidden line in an email you asked it to summarize. Will the AI obey?</title><link>https://owlai.cloud/blog/insight/22/</link><guid>https://owlai.cloud/blog/insight/22/</guid><category>Insights</category><description>You ask the AI to summarize twenty emails from business partners.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Masked in chat, do national ID numbers still turn up in Excel?</title><link>https://owlai.cloud/blog/insight/23/</link><guid>https://owlai.cloud/blog/insight/23/</guid><category>Insights</category><description>You ask the AI to analyze customer inquiry data, and its answer prints customer phone numbers verbatim. You add a safeguard that masks personal information, and the chat answers come back clean.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Do the passwords and keys you give the AI stay in the chat logs?</title><link>https://owlai.cloud/blog/insight/24/</link><guid>https://owlai.cloud/blog/insight/24/</guid><category>Insights</category><description>Connect the AI to your company database and a cloud drive, and you have handed it the database password and access to the drive.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The AI runs its own code to tidy your Excel. Is it safe unreviewed?</title><link>https://owlai.cloud/blog/insight/25/</link><guid>https://owlai.cloud/blog/insight/25/</guid><category>Insights</category><description>Upload a sales spreadsheet and ask for regional growth rates on a single PowerPoint slide, and the AI can&#x27;t answer in words. It has to calculate numbers and produce a file.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Email can&#x27;t be unsent. So can you let an AI hit send?</title><link>https://owlai.cloud/blog/insight/26/</link><guid>https://owlai.cloud/blog/insight/26/</guid><category>Insights</category><description>Say you ask the AI to &quot;let everyone from last week&#x27;s meeting know the schedule changed,&quot; and it misreads the attendee list and adds people from another team to the recipients.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Once the AI sends email and edits tickets, who approves it?</title><link>https://owlai.cloud/blog/insight/27/</link><guid>https://owlai.cloud/blog/insight/27/</guid><category>Insights</category><description>&quot;File last week&#x27;s meeting action items as issues.&quot; &quot;Find open slots in the team&#x27;s calendar next week.&quot; Once email, calendars, and issue trackers are connected, the AI handles requests like these in one go.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Asking AI for data you aren&#x27;t allowed to see: what happens?</title><link>https://owlai.cloud/blog/insight/28/</link><guid>https://owlai.cloud/blog/insight/28/</guid><category>Insights</category><description>A sales rep who has no access to HR data asks the AI, &quot;What&#x27;s the average salary increase this year?&quot; If the AI can reach the entire company database, a door that is closed to the person opens through the AI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Security says no to the cloud. Where does your business AI go?</title><link>https://owlai.cloud/blog/insight/29/</link><guid>https://owlai.cloud/blog/insight/29/</guid><category>Insights</category><description>When a company evaluates business AI, the discussion tends to drag once someone asks, &quot;Can we actually put this in the cloud?&quot; The cloud is the fast way to start, but the data makes people want to keep everything in-house.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Bringing AI to a network where ChatGPT won&#x27;t load</title><link>https://owlai.cloud/blog/insight/30/</link><guid>https://owlai.cloud/blog/insight/30/</guid><category>Insights</category><description>Type the ChatGPT address on a PC on your business network, and the page doesn&#x27;t load.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>While IT and security wait on each other, the AI rollout drags on</title><link>https://owlai.cloud/blog/insight/31/</link><guid>https://owlai.cloud/blog/insight/31/</guid><category>Insights</category><description>At the first meeting after your company decides to bring in business AI, IT asks which server to prepare, security asks what will leave the company, and the business teams ask when they can start trying it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Updating self-hosted AI: can it be done safely?</title><link>https://owlai.cloud/blog/insight/32/</link><guid>https://owlai.cloud/blog/insight/32/</guid><category>Insights</category><description>The notice says a new version is out, yet the server is still sitting several versions back. That is a familiar picture at companies running on-premises software.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>What changed when 163 employees asked AI 3,541 questions a month</title><link>https://owlai.cloud/blog/insight/33/</link><guid>https://owlai.cloud/blog/insight/33/</guid><category>Insights</category><description>On an average weekday, 152 questions reach the company&#x27;s internal OwlAI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Every business AI looks alike in a demo. Ten questions to ask first</title><link>https://owlai.cloud/blog/insight/34/</link><guid>https://owlai.cloud/blog/insight/34/</guid><category>Insights</category><description>Ask any product a short question in a demo, such as &quot;Who were our top customers by revenue last month?&quot;, and you get a plausible answer.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Open a database to one team. Do the off-limits tables come along?</title><link>https://owlai.cloud/blog/insight/35/</link><guid>https://owlai.cloud/blog/insight/35/</guid><category>Insights</category><description>An administrator opens the business database to the sales role. When a sales rep asks for order totals by customer, the AI finds the answer in that database.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Could one AI query slow down your order screen?</title><link>https://owlai.cloud/blog/insight/36/</link><guid>https://owlai.cloud/blog/insight/36/</guid><category>Insights</category><description>When the AI starts scanning a table of hundreds of millions of rows on your production database with no filter, the order screen and the settlement batch that share that database slow down from that moment on.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The standby database: can it take AI queries off production?</title><link>https://owlai.cloud/blog/insight/37/</link><guid>https://owlai.cloud/blog/insight/37/</guid><category>Insights</category><description>Ask for &quot;sales by region last month,&quot; and the AI doesn&#x27;t pull the answer right away. It checks table structures, confirms a few values and looks at the execution plan before it sends the main query.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The database address changes: does the AI connection follow?</title><link>https://owlai.cloud/blog/insight/38/</link><guid>https://owlai.cloud/blog/insight/38/</guid><category>Insights</category><description>Over the weekend, the database server moved to new hardware.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>How do you connect your company database securely?</title><link>https://owlai.cloud/blog/insight/39/</link><guid>https://owlai.cloud/blog/insight/39/</guid><category>Insights</category><description>In a meeting to review an AI rollout, the IT team gets a request: &quot;Open the database port so the AI server can connect.&quot; That database sits deep inside the internal network, behind the firewall, and t…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Connecting Amazon RDS to OwlAI, the easy way</title><link>https://owlai.cloud/blog/insight/40/</link><guid>https://owlai.cloud/blog/insight/40/</guid><category>Insights</category><description>Your customer database runs on Amazon RDS.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Connecting Supabase to OwlAI, the easy way</title><link>https://owlai.cloud/blog/insight/41/</link><guid>https://owlai.cloud/blog/insight/41/</guid><category>Insights</category><description>Your product data lives in Supabase. To connect it to an AI, someone opens the Supabase dashboard and finds three addresses for the same database. They copy one and try to register it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Permissions are enforced in code, judgment is left to the model</title><link>https://owlai.cloud/blog/technical/1/</link><guid>https://owlai.cloud/blog/technical/1/</guid><category>Engineering Notes</category><description>OwlAI&#x27;s agent reads internal databases and documents, and it also reads web pages and results from connectors (external services such as MCP servers that a company connects to OwlAI).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>One agent loop for every feature, with the differences in hooks</title><link>https://owlai.cloud/blog/technical/2/</link><guid>https://owlai.cloud/blog/technical/2/</guid><category>Engineering Notes</category><description>Five features in OwlAI have a model working by calling tools: chat; playbooks, which run a defined procedure with no one watching; schema analysis, which reads the tables of a connected database ahead…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>RAG can&#x27;t count or sum rows, so we ask the source database in SQL</title><link>https://owlai.cloud/blog/technical/3/</link><guid>https://owlai.cloud/blog/technical/3/</guid><category>Engineering Notes</category><description>Ask &quot;How many orders have gone unprocessed for more than 30 days?&quot; through document search (RAG), and the model counts the orders in the few chunks the search returned, then reports that number as the total.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Wrong-table SQL still runs, so search narrows the candidates first</title><link>https://owlai.cloud/blog/technical/4/</link><guid>https://owlai.cloud/blog/technical/4/</guid><category>Engineering Notes</category><description>A business database with thousands of tables often keeps backup and working copies such as ORDMSTBAK and ORDMST202312 next to the orders table.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>DDL doesn&#x27;t say what a column means, so we read its values first</title><link>https://owlai.cloud/blog/technical/5/</link><guid>https://owlai.cloud/blog/technical/5/</guid><category>Engineering Notes</category><description>The order table&#x27;s STATUSCODE CHAR(1) holds S, D and C. If the model guesses that C means complete, &quot;revenue from orders completed last month&quot; comes back with canceled orders mixed in.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Revenue differs by team, so questions carry the approved definition</title><link>https://owlai.cloud/blog/technical/6/</link><guid>https://owlai.cloud/blog/technical/6/</guid><category>Engineering Notes</category><description>Ask for &quot;last month&#x27;s revenue&quot; and sales thinks of booked orders, while finance thinks of invoiced amounts net of returns.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Read-only and query cancellation have to reach the database server</title><link>https://owlai.cloud/blog/technical/7/</link><guid>https://owlai.cloud/blog/technical/7/</guid><category>Engineering Notes</category><description>OwlAI&#x27;s SQL execution tool runs SQL written by the model against a customer&#x27;s production database. Some limits set on the client side look like they are in effect but never reach the database server.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Schema analysis goes stale, so only changed tables get reanalyzed</title><link>https://owlai.cloud/blog/technical/8/</link><guid>https://owlai.cloud/blog/technical/8/</guid><category>Engineering Notes</category><description>Suppose that after schema analysis (“DDL doesn&#x27;t say what a column means, so we read its values first”) finishes, someone adds a return flag column, RETURNYN, to the orders table.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Query results go to a file so the model never retypes them</title><link>https://owlai.cloud/blog/technical/9/</link><guid>https://owlai.cloud/blog/technical/9/</guid><category>Engineering Notes</category><description>When a user says &quot;Give me the result you just queried as a CSV file,&quot; the model has to write the rows it already received back out as arguments to a file-writing tool.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The bastion gets one key line that only forwards to the database, not an account</title><link>https://owlai.cloud/blog/technical/10/</link><guid>https://owlai.cloud/blog/technical/10/</guid><category>Engineering Notes</category><description>When a production database sits in a private network behind a bastion host (an SSH server that leads into that network), OwlAI reaches it through an SSH tunnel over the bastion.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Certificate errors are fixed with the right CA and the right name, not by turning off verification</title><link>https://owlai.cloud/blog/technical/11/</link><guid>https://owlai.cloud/blog/technical/11/</guid><category>Engineering Notes</category><description>When OwlAI runs on a corporate network and connects over TLS to a cloud LLM or a customer database, certificate errors come from two places.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Customer RDS lists are read with a 60-minute role, not an access key</title><link>https://owlai.cloud/blog/technical/12/</link><guid>https://owlai.cloud/blog/technical/12/</guid><category>Engineering Notes</category><description>To connect a customer&#x27;s Amazon RDS or Aurora database from OwlAI SaaS, OwlAI needs the endpoint, port and engine, plus network facts such as whether the database sits in a public subnet and which VPC…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Supabase connection addresses are filled by OAuth approval, not copied by hand</title><link>https://owlai.cloud/blog/technical/13/</link><guid>https://owlai.cloud/blog/technical/13/</guid><category>Engineering Notes</category><description>The Supabase dashboard lists three addresses for the same database: the project&#x27;s direct address, port 6543 on the shared pooler (the connection pooler Supabase runs in front of each project) in trans…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>OwlDB connections hold a database ID instead of credentials</title><link>https://owlai.cloud/blog/technical/14/</link><guid>https://owlai.cloud/blog/technical/14/</guid><category>Engineering Notes</category><description>To open a company database to the AI, an administrator enters the host, port, account and password into OwlAI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Per-role database accounts enforce table permissions, not SQL checks</title><link>https://owlai.cloud/blog/technical/15/</link><guid>https://owlai.cloud/blog/technical/15/</guid><category>Engineering Notes</category><description>Say an administrator opens only the customer and order tables to the sales role and closes the salary table in the same database.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Heavy SQL is judged by OwlDB, which knows the database&#x27;s state, not by a cost threshold</title><link>https://owlai.cloud/blog/technical/16/</link><guid>https://owlai.cloud/blog/technical/16/</guid><category>Engineering Notes</category><description>When AI-written SQL holds a production database for a long time, the order screen and the settlement batch that share that database slow down with it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>AI queries pick their database node at run time, not at registration</title><link>https://owlai.cloud/blog/technical/17/</link><guid>https://owlai.cloud/blog/technical/17/</guid><category>Engineering Notes</category><description>To keep AI queries off the primary node, you can register the connection with a standby&#x27;s address.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Two SQL executors, one set of checks and one result format</title><link>https://owlai.cloud/blog/technical/18/</link><guid>https://owlai.cloud/blog/technical/18/</guid><category>Engineering Notes</category><description>OwlAI has two ways to run SQL against a customer database. On a direct connection (one where an administrator typed in the connection details), OwlAI&#x27;s built-in executor connects to the database.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Load personal memory on every turn, and rewrite it whole</title><link>https://owlai.cloud/blog/technical/19/</link><guid>https://owlai.cloud/blog/technical/19/</guid><category>Engineering Notes</category><description>A user says, &quot;My account in the issue tracker is this ID.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Corrected column meanings, kept as table notes for the next user</title><link>https://owlai.cloud/blog/technical/20/</link><guid>https://owlai.cloud/blog/technical/20/</guid><category>Engineering Notes</category><description>The status column STATCD in a customer table holds 1, 2, and 9.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Korean particles break full-text search, so we join words with OR</title><link>https://owlai.cloud/blog/technical/21/</link><guid>https://owlai.cloud/blog/technical/21/</guid><category>Engineering Notes</category><description>A table note says 「반품 주문은 ORDRTN 테이블에 따로 쌓인다」 (&quot;returned orders pile up separately in the ORDRTN table&quot;), and a user asks 「지난달 반품 주문 건수를 알려 줘」 (&quot;tell me how many returned orders we had last month&quot;).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>One system prompt edit zeroes cache reads, so changing blocks go last</title><link>https://owlai.cloud/blog/technical/22/</link><guid>https://owlai.cloud/blog/technical/22/</guid><category>Engineering Notes</category><description>Every time an agent calls the model, the request carries the tool definitions, the system prompt, and the conversation so far, in that order.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>RLS guards org boundaries; the table classification decides deletion</title><link>https://owlai.cloud/blog/technical/23/</link><guid>https://owlai.cloud/blog/technical/23/</guid><category>Engineering Notes</category><description>In OwlAI SaaS, many organizations share one PostgreSQL database, and one person can belong to two of them. If each query is left to separate organizations, this setup breaks in two places.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>When document search ranks lookalike chunks first, rerank them</title><link>https://owlai.cloud/blog/technical/24/</link><guid>https://owlai.cloud/blog/technical/24/</guid><category>Engineering Notes</category><description>Ask &quot;How many days of annual leave can I carry over to next year?&quot; against a company&#x27;s policy documents with embeddings alone, and the leave request procedure, a guide to leave types, and last year&#x27;s notice come out on top.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Deep research returns reports with coverage and gaps, not raw text</title><link>https://owlai.cloud/blog/technical/25/</link><guid>https://owlai.cloud/blog/technical/25/</guid><category>Engineering Notes</category><description>A question like &quot;Summarize last quarter&#x27;s incident root causes across our three products, and compare how the industry responded to each cause&quot; takes more than one search.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Every answer source is a URL, and the server builds the list</title><link>https://owlai.cloud/blog/technical/26/</link><guid>https://owlai.cloud/blog/technical/26/</guid><category>Engineering Notes</category><description>When one answer draws on web pages, internal documents, records queried from a database, and tickets returned by a connector (MCP), deciding how to cite them becomes a real problem.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>To total a table in a document, load it into a temporary SQL table</title><link>https://owlai.cloud/blog/technical/27/</link><guid>https://owlai.cloud/blog/technical/27/</guid><category>Engineering Notes</category><description>Upload a Hangul document with a 300-row price list and ask for &quot;the average unit price by product group,&quot; and document search (RAG) returns a few chunks that look like the question.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>A turn&#x27;s input tokens grow with the square of its rounds</title><link>https://owlai.cloud/blog/technical/28/</link><guid>https://owlai.cloud/blog/technical/28/</guid><category>Engineering Notes</category><description>A model API remembers nothing between calls. Every time an agent calls the model, it sends the system prompt, the tool definitions, and the whole conversation context so far.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>OpenAI stores responses by default, so we resend the conversation</title><link>https://owlai.cloud/blog/technical/29/</link><guid>https://owlai.cloud/blog/technical/29/</guid><category>Engineering Notes</category><description>The OpenAI Responses API stores every response on the provider&#x27;s servers unless the request sets store, and the official documentation says a stored response stays for at least 30 days (checked 2026-11-03).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Keeping old answers out of edited questions with a conversation tree</title><link>https://owlai.cloud/blog/technical/30/</link><guid>https://owlai.cloud/blog/technical/30/</guid><category>Engineering Notes</category><description>Say a user asks for &quot;last month&#x27;s top 10 customers by revenue,&quot; and the model answers from a table that holds only domestic customers.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Mid-turn messages sit in a DB row, and a row lock picks who takes them</title><link>https://owlai.cloud/blog/technical/31/</link><guid>https://owlai.cloud/blog/technical/31/</guid><category>Engineering Notes</category><description>A deep research turn runs for up to an hour by default. A turn is one exchange: a question comes in and an answer goes out.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>A 400 that sticks: add tool results on write, fix shapes on send</title><link>https://owlai.cloud/blog/technical/32/</link><guid>https://owlai.cloud/blog/technical/32/</guid><category>Engineering Notes</category><description>Model APIs remember nothing between calls, so an agent resends the whole conversation context every round. A round is one model call plus running the tool calls in its response.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Compaction thresholds come from the input limit, not the context window</title><link>https://owlai.cloud/blog/technical/33/</link><guid>https://owlai.cloud/blog/technical/33/</guid><category>Engineering Notes</category><description>As a conversation grows, its requests eventually reach the input limit the model will accept. Before that happens, older turns have to be summarized or trimmed; this is called compaction.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Shrink giant tool results before the provider cuts them, and say so</title><link>https://owlai.cloud/blog/technical/34/</link><guid>https://owlai.cloud/blog/technical/34/</guid><category>Engineering Notes</category><description>Sometimes a single tool result blows past the model&#x27;s input limit in one go: a query that returns hundreds of thousands of rows, or an MCP server that sends back an enormous JSON blob.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>When every tool call succeeds but the results repeat, stop the agent</title><link>https://owlai.cloud/blog/technical/35/</link><guid>https://owlai.cloud/blog/technical/35/</guid><category>Engineering Notes</category><description>Sometimes every tool an agent calls succeeds and the work still goes nowhere.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Rerunning a chat repeats its mistakes. Keep the steps and working SQL</title><link>https://owlai.cloud/blog/technical/36/</link><guid>https://owlai.cloud/blog/technical/36/</guid><category>Engineering Notes</category><description>Say a chat once went well: it pulled last week&#x27;s sales from the database, grouped them by department, and built an Excel file. That conversation holds more than the result.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Tool calls a script makes still get permission and approval checks</title><link>https://owlai.cloud/blog/technical/37/</link><guid>https://owlai.cloud/blog/technical/37/</guid><category>Engineering Notes</category><description>Take a request like &quot;For each issue opened last week, look up the customer&#x27;s contract, and email the owner only on issues whose customer&#x27;s contract has ended.&quot; Each call builds its arguments from the…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Tools copy the form and load the guide; models fill the arguments</title><link>https://owlai.cloud/blog/technical/38/</link><guid>https://owlai.cloud/blog/technical/38/</guid><category>Engineering Notes</category><description>Making a quote from a company form takes two steps: copy the form to a new path, then fill in the copy. If copying is a separate tool the model has to call, the model often skips it.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Block Office files that won&#x27;t open, then show the model its pages</title><link>https://owlai.cloud/blog/technical/39/</link><guid>https://owlai.cloud/blog/technical/39/</guid><category>Engineering Notes</category><description>When a model writes code that builds an Excel file, the run can exit with code 0 and the model can answer &quot;Done,&quot; while Excel refuses to open the file.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>185 tool definitions cost 99K tokens, so we list names and load picks</title><link>https://owlai.cloud/blog/technical/40/</link><guid>https://owlai.cloud/blog/technical/40/</guid><category>Engineering Notes</category><description>To give an agent a tool, you put that tool&#x27;s definition, its name, description, and argument schema, into the request. The more MCP servers a customer connects, the more of those definitions there are.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Model-drawn bars can miss their numbers, so the screen draws charts</title><link>https://owlai.cloud/blog/technical/41/</link><guid>https://owlai.cloud/blog/technical/41/</guid><category>Engineering Notes</category><description>Ask a model to draw a bar chart as SVG and it converts each value to a height on its own scale and writes the coordinates.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Parent-picked subagent tools skip approval, so code decides them</title><link>https://owlai.cloud/blog/technical/42/</link><guid>https://owlai.cloud/blog/technical/42/</guid><category>Engineering Notes</category><description>The usual way to add subagents is to give the parent model a tool that launches them and let it decide the prompt, tools, and model each time. In a business system, that freedom breaks three things.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Transcripts misspell internal names; the minutes model fixes them</title><link>https://owlai.cloud/blog/technical/43/</link><guid>https://owlai.cloud/blog/technical/43/</guid><category>Engineering Notes</category><description>When a meeting recording is transcribed, internal system names and product names come out as the common word that sounds closest.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Overlapping meetings stall transcripts, so split queues by resource</title><link>https://owlai.cloud/blog/technical/44/</link><guid>https://owlai.cloud/blog/technical/44/</guid><category>Engineering Notes</category><description>In an on-premises installation, several meetings share one speech recognition model running on a single GPU.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Ending a meeting drops the last remarks; audio waits for transcription</title><link>https://owlai.cloud/blog/technical/45/</link><guid>https://owlai.cloud/blog/technical/45/</guid><category>Engineering Notes</category><description>When a meeting ends, some of its sound has not been transcribed yet.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>A dropped meeting recording pauses the meeting instead of ending it</title><link>https://owlai.cloud/blog/technical/46/</link><guid>https://owlai.cloud/blog/technical/46/</guid><category>Engineering Notes</category><description>A meeting recording runs for an hour or more in a single browser tab.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Choose meeting speech recognition by speaker turns and retention</title><link>https://owlai.cloud/blog/technical/47/</link><guid>https://owlai.cloud/blog/technical/47/</guid><category>Engineering Notes</category><description>Choose a meeting speech recognition service from a single error-rate table and two things go wrong.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>External models never see internal-only data, not even its name</title><link>https://owlai.cloud/blog/technical/48/</link><guid>https://owlai.cloud/blog/technical/48/</guid><category>Engineering Notes</category><description>Put a model running inside the customer network and an external API model in one installation, and deciding which models people may use does not keep internal data from leaving.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>A URL in a tool result stays closed if the model wrote it first</title><link>https://owlai.cloud/blog/technical/49/</link><guid>https://owlai.cloud/blog/technical/49/</guid><category>Engineering Notes</category><description>Tools that read a web page or download a file from a URL only open addresses that appeared earlier in the conversation (“Permissions are enforced in code, judgment is left to the model”).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Scrubbing answers is too late for phone numbers. We mask tool results</title><link>https://owlai.cloud/blog/technical/50/</link><guid>https://owlai.cloud/blog/technical/50/</guid><category>Engineering Notes</category><description>&quot;Find the customers who asked for a refund more than three times last week and summarize what they said&quot; is not a question a single number can answer.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Answer-only checks leak via Excel: one check for every exit path</title><link>https://owlai.cloud/blog/technical/51/</link><guid>https://owlai.cloud/blog/technical/51/</guid><category>Engineering Notes</category><description>In a conversation that analyzes customer inquiries, someone without permission to view originals sees the phone number in the answer as [PHONE-1] (“Scrubbing answers is too late for phone numbers.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Keeping presigned URLs out of the model with 19-character references</title><link>https://owlai.cloud/blog/technical/52/</link><guid>https://owlai.cloud/blog/technical/52/</guid><category>Engineering Notes</category><description>Connectors for cloud file services (external services, such as MCP servers, that a company connects to OwlAI) return download links as pre-authenticated URLs, also called presigned URLs.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Database backups carry stored passwords, so the key lives elsewhere</title><link>https://owlai.cloud/blog/technical/53/</link><guid>https://owlai.cloud/blog/technical/53/</guid><category>Engineering Notes</category><description>OwlAI&#x27;s metadata database holds customer database passwords, LLM provider API keys, OAuth tokens for connectors (external services such as MCP servers that a company connects to OwlAI), and SSH privat…</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Sandbox each script run, then prove isolation on the actual server</title><link>https://owlai.cloud/blog/technical/54/</link><guid>https://owlai.cloud/blog/technical/54/</guid><category>Engineering Notes</category><description>In OwlAI, Excel, Word, PowerPoint and Hangul documents are produced by python and node scripts the model writes, and scripts also post-process query results.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Told to confirm first, the model still sends the email, so approval happens right before execution</title><link>https://owlai.cloud/blog/technical/55/</link><guid>https://owlai.cloud/blog/technical/55/</guid><category>Engineering Notes</category><description>You can write &quot;Confirm with the user before sending email&quot; in the system prompt, and the model can still call the email tool without asking (“Permissions are enforced in code, judgment is left to the model”).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Connector shows Connected but returns 401: refresh by response code</title><link>https://owlai.cloud/blog/technical/56/</link><guid>https://owlai.cloud/blog/technical/56/</guid><category>Engineering Notes</category><description>When you attach a connector (an outside service such as an MCP server that a company connects to OwlAI) with OAuth, each user signs in once with their own account, and OwlAI calls tools with the access token it received then.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Connector OAuth callbacks finish at once only in the starting browser</title><link>https://owlai.cloud/blog/technical/57/</link><guid>https://owlai.cloud/blog/technical/57/</guid><category>Engineering Notes</category><description>OwlAI&#x27;s per-user connectors (external services such as MCP servers that a company connects to OwlAI) attach through OAuth.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Customers know their connector tools&#x27; risks, so tool policy is per install</title><link>https://owlai.cloud/blog/technical/58/</link><guid>https://owlai.cloud/blog/technical/58/</guid><category>Engineering Notes</category><description>Say a customer turns its internal e-approval system into an MCP server and attaches it to OwlAI as a connector (an external service, such as an MCP server, that a company connects to OwlAI).</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Auditing an AI agent: log every query it runs, not the conversation</title><link>https://owlai.cloud/blog/technical/59/</link><guid>https://owlai.cloud/blog/technical/59/</guid><category>Engineering Notes</category><description>Open your internal databases and documents to an AI agent, and after an incident a security officer will ask: who on the sales team used the AI to query the customer table last month, and did that person have permission to see it?</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The preflight check only reads the host and leaves the fixes to a person</title><link>https://owlai.cloud/blog/technical/60/</link><guid>https://owlai.cloud/blog/technical/60/</guid><category>Engineering Notes</category><description>On-premises OwlAI runs as a Docker Compose stack on a single host the customer picks. The distribution, kernel, Docker version, security modules and certificates differ from one customer to the next.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>People set the Docker address pool, and the check compares it with internal ranges</title><link>https://owlai.cloud/blog/technical/61/</link><guid>https://owlai.cloud/blog/technical/61/</guid><category>Engineering Notes</category><description>Install on-premises OwlAI on a host inside a corporate network, wait a few weeks, and one day an internal database or inference server that answered yesterday may be unreachable from your containers.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Behind a corporate proxy, list NO_PROXY hosts by name and IP, not CIDR</title><link>https://owlai.cloud/blog/technical/62/</link><guid>https://owlai.cloud/blog/technical/62/</guid><category>Engineering Notes</category><description>When you install on-premises OwlAI on a corporate network that can reach the internet only through a proxy, calls to cloud LLMs have to follow HTTPSPROXY out through that proxy.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Deploys and air-gapped loads are checked by digest, not by tag</title><link>https://owlai.cloud/blog/technical/63/</link><guid>https://owlai.cloud/blog/technical/63/</guid><category>Engineering Notes</category><description>On-premises OwlAI runs on the customer&#x27;s host as nine container images.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Code, not people, picks the files in an install kit</title><link>https://owlai.cloud/blog/technical/64/</link><guid>https://owlai.cloud/blog/technical/64/</guid><category>Engineering Notes</category><description>An on-premises product keeps the files customers receive and the files that stay in-house in the same repository.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Files that must survive a redeploy live only in object storage</title><link>https://owlai.cloud/blog/technical/65/</link><guid>https://owlai.cloud/blog/technical/65/</guid><category>Engineering Notes</category><description>When someone records a meeting, the browser uploads a chunk of the recording to the web backend every 5 seconds, and a worker in a different container transcribes those chunks.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Measure the vLLM concurrency limit with production input lengths, not short prompts</title><link>https://owlai.cloud/blog/technical/66/</link><guid>https://owlai.cloud/blog/technical/66/</guid><category>Engineering Notes</category><description>Benchmark a vLLM server for a self-hosted model with 1.1K-token prompts, and the numbers tell you to raise the number of requests processed at once (maxnumseqs) from 4 to 32, because total throughput rises 92%.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>The update button only approves, and only the updater holds the docker socket</title><link>https://owlai.cloud/blog/technical/67/</link><guid>https://owlai.cloud/blog/technical/67/</guid><category>Engineering Notes</category><description>Put an update button in the admin console of an on-premises product, and something has to stop the containers and start them again on new images after the click.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>When an update fails, the schema change decides between rolling back code and restoring the dump</title><link>https://owlai.cloud/blog/technical/68/</link><guid>https://owlai.cloud/blog/technical/68/</guid><category>Engineering Notes</category><description>When an update fails, the operator&#x27;s first move is to redeploy the previous image. Redeploying an image rolls back the image only; the database schema stays as it is.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Worker restarts: every running turn answers or records its failure</title><link>https://owlai.cloud/blog/technical/69/</link><guid>https://owlai.cloud/blog/technical/69/</guid><category>Engineering Notes</category><description>In OwlAI, workers run chat turns (one question through to its answer), not the web server. The web server only accepts a question and puts it on a job queue.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Deploy success is judged by failed turns after the deploy, not by health checks</title><link>https://owlai.cloud/blog/technical/70/</link><guid>https://owlai.cloud/blog/technical/70/</guid><category>Engineering Notes</category><description>A deployment can be broken while /health returns 200 and every container shows healthy. The old version may still be running instead of the one you approved.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>On-premises OwlAI is observed through one JSON log, joined to the worker by a request ID</title><link>https://owlai.cloud/blog/technical/71/</link><guid>https://owlai.cloud/blog/technical/71/</guid><category>Engineering Notes</category><description>An on-premises product runs on the customer&#x27;s servers. When something breaks, the vendor often has nothing to look at but the logs the customer has collected.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>One shell fingerprint decides whether the desktop app gets a new UI or a new installer</title><link>https://owlai.cloud/blog/technical/72/</link><guid>https://owlai.cloud/blog/technical/72/</guid><category>Engineering Notes</category><description>When a desktop app&#x27;s UI lives inside its installer, changing one button label means shipping a new installer. Windows users download it and see a restart prompt on every release.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>On-premises features are turned on by version, not by config flags</title><link>https://owlai.cloud/blog/technical/73/</link><guid>https://owlai.cloud/blog/technical/73/</guid><category>Engineering Notes</category><description>Put a boolean field that turns a feature on or off into the settings file of an on-premises product, and every customer server ends up with its own value.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Korean text leaking into English installs is blocked at merge by a source check</title><link>https://owlai.cloud/blog/technical/74/</link><guid>https://owlai.cloud/blog/technical/74/</guid><category>Engineering Notes</category><description>OwlAI is an on-premises product, so each installation runs in one language. The supported languages are Korean and English.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>LLM answers vary by run, so E2E tests check what the server recorded</title><link>https://owlai.cloud/blog/technical/75/</link><guid>https://owlai.cloud/blog/technical/75/</guid><category>Engineering Notes</category><description>In a product with an LLM inside, an E2E test that compares the answer text with an expected string fails even when nothing is broken.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item><item><title>Reconcile the LLM cost ledger with the bill, and count cache tokens by response format</title><link>https://owlai.cloud/blog/technical/76/</link><guid>https://owlai.cloud/blog/technical/76/</guid><category>Engineering Notes</category><description>In OwlAI, administrators can set a usage limit for each user, and OwlAI SaaS draws down a member&#x27;s credits on every call. Both read the LLM costs the product records itself.</description><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate></item></channel></rss>