<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Databasin News</title>
    <description>The latest articles on DEV Community by Databasin News (@databasin).</description>
    <link>https://dev.to/databasin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3887949%2F818e0f53-805c-4b42-9cc0-157f5f57dde8.png</url>
      <title>DEV Community: Databasin News</title>
      <link>https://dev.to/databasin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/databasin"/>
    <language>en</language>
    <item>
      <title>The SQL editor and notebooks, rebuilt: tabs, versions, and real .ipynb files</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:40:14 +0000</pubDate>
      <link>https://dev.to/databasin/the-sql-editor-and-notebooks-rebuilt-tabs-versions-and-real-ipynb-files-1a3p</link>
      <guid>https://dev.to/databasin/the-sql-editor-and-notebooks-rebuilt-tabs-versions-and-real-ipynb-files-1a3p</guid>
      <description>&lt;p&gt;Two of the surfaces you spend the most time in got rebuilt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SQL editor
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tabs that run independently.&lt;/strong&gt; Start a long query in one tab and keep writing in another — each tab owns its own run state instead of the whole editor going busy. &lt;code&gt;Cmd/Ctrl+T&lt;/code&gt; for a new tab, &lt;code&gt;Cmd/Ctrl+W&lt;/code&gt; to close, &lt;code&gt;Cmd/Ctrl+1–9&lt;/code&gt; to jump.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run all&lt;/strong&gt;, with one result sub-tab per statement, so a script of six statements gives you six sets of results instead of only the last one. There's a real &lt;strong&gt;Cancel&lt;/strong&gt; — including "stop all running queries" when you've started more than you meant to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scripts have versions.&lt;/strong&gt; Saved server-side, with history you can look through and share, because "I had it working an hour ago" should be recoverable.&lt;/p&gt;

&lt;p&gt;Once results are on screen, you can work with them without re-querying: filter, pick columns, or open &lt;strong&gt;Summary&lt;/strong&gt; for per-column types, null counts, distinct values, and ranges. Export CSV or JSON, chart it, save the results to your lakehouse, or turn the statement straight into an automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notebooks that speak Jupyter
&lt;/h2&gt;

&lt;p&gt;The important thing about a notebook feature is whether your existing notebooks work in it and whether your new ones can leave.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import&lt;/strong&gt; accepts real &lt;code&gt;nbformat&lt;/code&gt; 4.x files, mapping the kernel and keeping cell ids where the format carries them. Saved outputs are dropped — you get the code, and you re-run it against your own data. &lt;strong&gt;Export&lt;/strong&gt; emits valid &lt;strong&gt;nbformat 4.5&lt;/strong&gt;, which means &lt;code&gt;nbconvert&lt;/code&gt;, &lt;code&gt;nbdime&lt;/code&gt;, and GitHub's own renderer all read what comes out. Not a lookalike format; the actual one.&lt;/p&gt;

&lt;p&gt;An older nbformat 3 file is &lt;strong&gt;rejected by name&lt;/strong&gt;, with an explanation. The alternative — importing it as a silently empty notebook — is the kind of small dishonesty that costs someone an afternoon.&lt;/p&gt;

&lt;p&gt;The full modal keyboard layer is there: &lt;code&gt;Esc&lt;/code&gt; and &lt;code&gt;Enter&lt;/code&gt; for command and edit modes, &lt;code&gt;A&lt;/code&gt;/&lt;code&gt;B&lt;/code&gt; to insert, &lt;code&gt;J&lt;/code&gt;/&lt;code&gt;K&lt;/code&gt; to move, &lt;code&gt;Y&lt;/code&gt;/&lt;code&gt;M&lt;/code&gt; to change cell type, &lt;code&gt;C&lt;/code&gt;/&lt;code&gt;X&lt;/code&gt;/&lt;code&gt;V&lt;/code&gt; to copy, cut, paste, &lt;code&gt;Z&lt;/code&gt; to undo, &lt;code&gt;Shift+M&lt;/code&gt; to merge. Plus a cell command palette, cross-cell find and replace, a table of contents built from your markdown headings, and &lt;strong&gt;Run this section&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cells run &lt;strong&gt;SQL, Python, PySpark, and Scala&lt;/strong&gt; against your lakehouse.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a cell breaks
&lt;/h2&gt;

&lt;p&gt;An errored cell offers &lt;strong&gt;Explain this error&lt;/strong&gt; and &lt;strong&gt;Fix this cell&lt;/strong&gt; — and a fix arrives as a proposed change you can &lt;em&gt;Accept&lt;/em&gt;, or &lt;em&gt;Accept and run&lt;/em&gt;. It doesn't rewrite your cell behind your back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worth knowing
&lt;/h2&gt;

&lt;p&gt;Notebooks carry a &lt;strong&gt;Beta&lt;/strong&gt; badge, and they've earned the honesty that goes with it: &lt;strong&gt;Python cells can't be interrupted once running&lt;/strong&gt; — SQL cells can — and all tabs in the editor share a single connection, so you can't put a Trino tab next to a Databricks tab.&lt;/p&gt;

&lt;p&gt;Everything else is exactly what it looks like. Open the SQL editor, hit &lt;code&gt;Cmd/Ctrl+T&lt;/code&gt;, and start.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Snowflake key-pair authentication is here — before you need it</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:39:40 +0000</pubDate>
      <link>https://dev.to/databasin/snowflake-key-pair-authentication-is-here-before-you-need-it-1abj</link>
      <guid>https://dev.to/databasin/snowflake-key-pair-authentication-is-here-before-you-need-it-1abj</guid>
      <description>&lt;p&gt;Snowflake is phasing out password authentication for service users. If a pipeline of yours signs in to Snowflake with a username and password today, that pipeline has a clock on it.&lt;/p&gt;

&lt;p&gt;The Databasin Snowflake connector now supports &lt;strong&gt;key-pair authentication&lt;/strong&gt;. Pick &lt;strong&gt;Key Pair&lt;/strong&gt; as the auth type, paste your private key, and you're done.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you fill in
&lt;/h2&gt;

&lt;p&gt;Three fields, one of them optional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Username&lt;/strong&gt; — the Snowflake user the key belongs to&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Key (PEM)&lt;/strong&gt; — the key itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Key Passphrase&lt;/strong&gt; — only if your key is encrypted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Encrypted and unencrypted keys both work.&lt;/strong&gt; If your security team hands you a passphrase-protected key, it goes in as-is; if it doesn't have one, leave the field blank.&lt;/p&gt;

&lt;p&gt;Password authentication is still there and still first in the list, so &lt;strong&gt;nothing you already have changes&lt;/strong&gt;. This is an option you take when you're ready, or when Snowflake makes the decision for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  It works everywhere the connector works
&lt;/h2&gt;

&lt;p&gt;The part that's easy to get wrong — and that we specifically went back and fixed — is that an auth method has to work on &lt;em&gt;every&lt;/em&gt; path, not just the one you test first. A key that passes Test Connection and then fails when you browse for a table is worse than no support at all, because you find out halfway through building something.&lt;/p&gt;

&lt;p&gt;Key-pair auth works across &lt;strong&gt;testing the connection, browsing schemas and tables, previewing data, and every scheduled ingestion run.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the key lives
&lt;/h2&gt;

&lt;p&gt;Your private key is stored in the same managed secret vault as every other credential you give Databasin. When a run needs it on disk, the file is created with owner-only permissions &lt;strong&gt;before a single byte is written to it&lt;/strong&gt;, and removed when the process exits. It is never written to a log.&lt;/p&gt;

&lt;h2&gt;
  
  
  One thing to know
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live federation — querying Snowflake as a live catalog without syncing — is still password-only today.&lt;/strong&gt; If you use both, the ingestion side can move to key-pair now, and the live side needs to keep its password until we finish that work. We would rather tell you that than let you find it on a Friday.&lt;/p&gt;

&lt;p&gt;If you run Snowflake, this is worth doing ahead of the change rather than during it — check Snowflake's own guidance for the dates that apply to your account. Open the connector, switch the auth type, paste the key.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The OCR task: turn a folder of PDFs into a lakehouse table</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:39:37 +0000</pubDate>
      <link>https://dev.to/databasin/the-ocr-task-turn-a-folder-of-pdfs-into-a-lakehouse-table-4okj</link>
      <guid>https://dev.to/databasin/the-ocr-task-turn-a-folder-of-pdfs-into-a-lakehouse-table-4okj</guid>
      <description>&lt;p&gt;Some data never arrives through an API. It arrives as a PDF: the course catalog, the invoice, the statement, the scanned report somebody emailed you. The numbers are right there, in a table, on page 14 — and the only integration anyone has ever offered you is a person retyping it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCR is a new task type in Automations.&lt;/strong&gt; Point it at a folder of PDFs, describe the fields you want, and it writes rows to a lakehouse table on your schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  You describe fields, not layouts
&lt;/h2&gt;

&lt;p&gt;There is no template to draw, no anchor text to configure, no zone to box off. Under &lt;strong&gt;Fields to Extract&lt;/strong&gt; you list what you want and what it means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;course_code&lt;/code&gt; — &lt;em&gt;the catalog identifier, e.g. BIOL 2010&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;credit_hours&lt;/code&gt; — &lt;em&gt;number of credits; blank if the course is listed as variable&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those descriptions are the control surface. They go to the model as instructions, so the way you sharpen extraction is by saying what you mean more precisely — not by re-teaching a layout every time the vendor redesigns their PDF. &lt;strong&gt;Layout doesn't matter.&lt;/strong&gt; The table can sit anywhere on the page, and it can sit somewhere else next quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every page, every run, with receipts
&lt;/h2&gt;

&lt;p&gt;Each page is rendered and read by a &lt;strong&gt;vision model&lt;/strong&gt; — there's no text-layer shortcut that quietly skips scanned documents. You pin which model does it, GPT or Claude, in the task's LLM connector.&lt;/p&gt;

&lt;p&gt;Every row lands with provenance attached: &lt;code&gt;source_file&lt;/code&gt;, &lt;code&gt;source_page&lt;/code&gt;, &lt;code&gt;source_last_modified&lt;/code&gt;, &lt;code&gt;source_uri&lt;/code&gt;, &lt;code&gt;extraction_confidence&lt;/code&gt;, plus the automation, task, and run that produced it. When a number looks wrong, you can get to the document it came from instead of arguing about it.&lt;/p&gt;

&lt;p&gt;Turn on &lt;strong&gt;Archive PDFs for citations&lt;/strong&gt; and the source document is stored alongside the data, so &lt;strong&gt;Databasin One can open the source document&lt;/strong&gt; when it cites the row in an answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  It only reads what's new
&lt;/h2&gt;

&lt;p&gt;Runs are incremental by default, and the watermark is the output table itself — the task asks your own data what the newest document it has already read is, and starts there. No separate state to corrupt, nothing to reset. A document that fails doesn't advance the watermark, so it gets picked up on the next run instead of being silently skipped.&lt;/p&gt;

&lt;p&gt;Long documents are handled in windows rather than one giant request, so a 200-page catalog is a normal input rather than a failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fits where your other tasks fit
&lt;/h2&gt;

&lt;p&gt;It's a task card on the same automation canvas as your SQL, dbt, notebook, and agent tasks. Chain it after a file drop, run it nightly, deliver what it produces however you deliver everything else. The output is an ordinary Iceberg table in your lakehouse — every engine and every dashboard can read it the moment it lands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beta, and honest about it
&lt;/h2&gt;

&lt;p&gt;OCR ships as &lt;strong&gt;beta&lt;/strong&gt;. Some specifics worth knowing before you point it at something important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PDFs today.&lt;/strong&gt; Not images, not Office documents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every extracted field is text.&lt;/strong&gt; Casting to numbers and dates is downstream work, the same as any other raw landing table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;extraction_confidence&lt;/code&gt; is a triage signal, not a calibrated probability.&lt;/strong&gt; Use it to sort what a human should look at, not to certify accuracy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The target is your Databasin lakehouse&lt;/strong&gt; in this version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Documents are the last place where "we have the data" and "we can query the data" are still different sentences. This closes some of that gap — and it does it with the rest of your pipeline, on your schedule, in your warehouse.&lt;/p&gt;

&lt;p&gt;Build one in &lt;strong&gt;Automations → add a task → Intelligence Tasks → OCR&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Point at a database, get a pipeline: ingestion that works itself out</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:39:03 +0000</pubDate>
      <link>https://dev.to/databasin/point-at-a-database-get-a-pipeline-ingestion-that-works-itself-out-o2g</link>
      <guid>https://dev.to/databasin/point-at-a-database-get-a-pipeline-ingestion-that-works-itself-out-o2g</guid>
      <description>&lt;p&gt;Setting up ingestion has always asked you to answer questions you can only really answer by digging: which of these tables can load incrementally, which column reliably tracks change, which columns make a row unique, is this file a CSV or something that merely looks like one.&lt;/p&gt;

&lt;p&gt;Nobody enjoys that part. So Databasin now does the digging and shows you what it found.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two screens instead of six
&lt;/h2&gt;

&lt;p&gt;The database flow went from &lt;strong&gt;five or six screens down to two&lt;/strong&gt;, and the file flow from three to two. You pick what you want to bring over, and the review screen arrives with a proposed plan for each object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sixteen database connectors&lt;/strong&gt; are on the new flow, including &lt;strong&gt;Epic Clarity&lt;/strong&gt;, along with &lt;strong&gt;five storage connectors&lt;/strong&gt; for the file lane — SFTP, S3, ADLS, Box, and SharePoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  It reads the evidence, it doesn't guess from names
&lt;/h2&gt;

&lt;p&gt;The easy version of this feature is to look for a column called &lt;code&gt;updated_at&lt;/code&gt; and hope. That approach breaks quietly and expensively.&lt;/p&gt;

&lt;p&gt;Instead, detection reads real catalog metadata and runs &lt;strong&gt;bounded, read-only probes&lt;/strong&gt; — a strict overall time budget, per-statement limits, and a hard rule that it &lt;strong&gt;never runs &lt;code&gt;count(*)&lt;/code&gt;&lt;/strong&gt; on your tables. Row counts come from statistics catalogs or they don't come at all.&lt;/p&gt;

&lt;p&gt;The heuristics are the interesting bit, because they encode the mistakes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Server's &lt;code&gt;rowversion&lt;/code&gt; is &lt;strong&gt;excluded&lt;/strong&gt; as a watermark. It looks perfect and it isn't — it's a binary counter, not a time.&lt;/li&gt;
&lt;li&gt;A candidate watermark that hasn't moved in &lt;strong&gt;90 days&lt;/strong&gt; while a sibling creation column has been updating gets flagged as stale rather than trusted.&lt;/li&gt;
&lt;li&gt;A nullable candidate isn't silently accepted — it's either paired with a creation-date sibling or probed for nulls first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For files, Databasin samples &lt;strong&gt;several files per pattern&lt;/strong&gt; rather than trusting the first one, and takes the consensus for format, delimiter, and header. When the files disagree with each other, it says so — &lt;code&gt;mixed_dialect&lt;/code&gt;, &lt;code&gt;header_disagreement&lt;/code&gt; — instead of picking one and letting you discover the problem in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Files like this"
&lt;/h2&gt;

&lt;p&gt;Turn any single file into a wildcard pattern with one click, and see &lt;strong&gt;how many files currently match&lt;/strong&gt; before you commit to it.&lt;/p&gt;

&lt;p&gt;And a small rule that removes an entire category of silent failure: &lt;strong&gt;a pattern that matches zero files won't save.&lt;/strong&gt; The pipeline that runs green forever and never brings in a row is not a mystery we're willing to keep shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  You still decide
&lt;/h2&gt;

&lt;p&gt;Detection is a &lt;strong&gt;recommendation, not an act&lt;/strong&gt;. Every proposal is shown with what it was based on, and the file lane requires you to confirm before anything is created. Files default to a full snapshot; incremental loading is something &lt;strong&gt;you&lt;/strong&gt; turn on, not something inferred on your behalf.&lt;/p&gt;

&lt;p&gt;That's the line we're drawing: the machine does the tedious investigation, and you keep the judgment. You should be approving a plan you can see the reasoning for — not filling in six screens of fields you'd have to run experiments to answer honestly.&lt;/p&gt;

&lt;p&gt;Connect a source and see what it proposes.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Diagnose with AI: failed runs that explain themselves</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:39:00 +0000</pubDate>
      <link>https://dev.to/databasin/diagnose-with-ai-failed-runs-that-explain-themselves-1aee</link>
      <guid>https://dev.to/databasin/diagnose-with-ai-failed-runs-that-explain-themselves-1aee</guid>
      <description>&lt;p&gt;A failed run tells you it failed. Finding out &lt;em&gt;why&lt;/em&gt; has always meant reading logs written for whoever wrote the code, not for whoever has to fix it at 8am.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diagnose with AI&lt;/strong&gt; turns that into a button. It's available on pipeline runs, artifacts, and automation runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The classification happens before any AI does
&lt;/h2&gt;

&lt;p&gt;Before a model is involved at all, a deterministic classifier labels what went wrong: an empty configuration, an empty window, schema drift, a malformed URL, an authentication failure, a quota problem, or something transient.&lt;/p&gt;

&lt;p&gt;That matters for two reasons. Failures that have a definite answer get the definite answer, and the explanation you read afterwards is anchored to a real classification instead of a model's impression of one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your credentials never reach the model
&lt;/h2&gt;

&lt;p&gt;This is the part we care most about, and it works the way it should rather than the way that's easy.&lt;/p&gt;

&lt;p&gt;Evidence is redacted &lt;strong&gt;on the server, before it is sent to your browser or to any model.&lt;/strong&gt; Not filtered in the UI. Not trusted to a prompt.&lt;/p&gt;

&lt;p&gt;Raw response-body dumps and Spark row dumps are dropped entirely — not masked, dropped — because a body dump is the single most likely place for your actual customer data to be sitting in a log. On top of that, URL query strings, bearer tokens, database connection credentials, SQL literals in &lt;code&gt;WHERE&lt;/code&gt; clauses, email addresses, and long digit sequences are all redacted before the payload leaves the server.&lt;/p&gt;

&lt;p&gt;Container logs are a &lt;strong&gt;separate, opt-in step&lt;/strong&gt;. Nothing pulls them automatically.&lt;/p&gt;

&lt;p&gt;An AI feature that reads your logs is ordinary now. One that does the redaction on the server — before the payload leaves it, rather than trusting a prompt to behave — is the version worth shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proposed fixes, never applied fixes
&lt;/h2&gt;

&lt;p&gt;For request-configuration problems — a wrong route, base URL, method, parameter, or header — Databasin can go further and propose the correction. It arrives as a &lt;strong&gt;field-by-field diff&lt;/strong&gt;: here's what you have, here's what it should be, here's why.&lt;/p&gt;

&lt;p&gt;You review it and you save it. In the product's own words: &lt;em&gt;nothing is changed automatically.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And a proposal is only badged &lt;strong&gt;Verified&lt;/strong&gt; when the corrected request actually reached the vendor and came back healthy. If it couldn't be proven, it says so, and tells you what wasn't verified. A confident-sounding wrong answer is worse than no answer, so an unproven fix has to look unproven.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it won't pretend to fix
&lt;/h2&gt;

&lt;p&gt;Auto-Fix handles request configuration. Credential problems, transient failures, and schema drift are diagnosed and explained, then explicitly handed back with what needs to happen instead — rather than a fix that looks plausible and isn't.&lt;/p&gt;

&lt;p&gt;The goal isn't a product that claims to repair itself. It's the end of reading a stack trace to find out that somebody renamed a column.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Databasin One goes with you: hand your chat to your phone</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:38:26 +0000</pubDate>
      <link>https://dev.to/databasin/databasin-one-goes-with-you-hand-your-chat-to-your-phone-208k</link>
      <guid>https://dev.to/databasin/databasin-one-goes-with-you-hand-your-chat-to-your-phone-208k</guid>
      <description>&lt;p&gt;The question you needed an answer to rarely waits until you're at your desk. It shows up in the hallway on the way to the meeting, or in the meeting, five minutes after you closed the laptop.&lt;/p&gt;

&lt;p&gt;Two changes ship together to fix that. &lt;strong&gt;Your chats are now saved&lt;/strong&gt;, and &lt;strong&gt;you can hand the one you're in to your phone.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your conversations are saved now
&lt;/h2&gt;

&lt;p&gt;Until this release, a chat with Databasin One lived in the browser tab and died with it. Now every conversation is stored to your account, per project, and appears in a strip above the chat — click any one to pick it back up.&lt;/p&gt;

&lt;p&gt;A saved chat remembers more than the words. Each one keeps &lt;strong&gt;its own warehouse connection, its own data context, and its own settings&lt;/strong&gt;, so reopening a conversation from three days ago puts you back in that conversation's world, not your most recent one — and you can re-run any answer in it against live data.&lt;/p&gt;

&lt;p&gt;We cap it at &lt;strong&gt;10 saved chats per project, per person&lt;/strong&gt; — start an 11th and the oldest one makes way. It's a chat history, not an archive, and the cap keeps it fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continue on phone
&lt;/h2&gt;

&lt;p&gt;In Databasin One's sidebar there's a new action: &lt;strong&gt;Continue on phone&lt;/strong&gt;. It opens a QR code you scan with your phone's camera. You can also copy the link, or have it emailed to you.&lt;/p&gt;

&lt;p&gt;Sign in on the phone and you land in the same conversation — not a fresh chat that happens to be in the same project. The thread is there, the project is there, the warehouse is there. Ask the next question from wherever you're standing.&lt;/p&gt;

&lt;p&gt;It works for &lt;strong&gt;workspace chats&lt;/strong&gt; the same way. Hand off from a workspace and the phone opens that workspace's session, with the same save controls and session picker your desktop has.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add it to your home screen
&lt;/h2&gt;

&lt;p&gt;The phone experience is a proper installable app: &lt;strong&gt;Databasin&lt;/strong&gt; on your home screen, opening straight into Databasin One. Add it once from the handoff screen and it's a one-tap thing forever.&lt;/p&gt;

&lt;p&gt;There's no separate mobile account and no separate mobile network path. It's the same sign-in and the same permissions you already have, and queries take the same governed route to the same warehouse. For teams whose phones sit behind a VPN, that matters: &lt;strong&gt;nothing new to allow, nothing new to secure.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it isn't
&lt;/h2&gt;

&lt;p&gt;The phone is built for asking and reading, not authoring. You get the conversation, the answers, your dashboards — and the ability to keep going. You don't get the full desktop surface, and that's the point: the meeting doesn't need a dashboard builder, it needs the answer.&lt;/p&gt;

&lt;p&gt;Open Databasin One, look for &lt;strong&gt;Continue on phone&lt;/strong&gt;, and scan.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automate this conversation: turn an answer into a scheduled report</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sun, 16 Aug 2026 00:38:23 +0000</pubDate>
      <link>https://dev.to/databasin/automate-this-conversation-turn-an-answer-into-a-scheduled-report-337m</link>
      <guid>https://dev.to/databasin/automate-this-conversation-turn-an-answer-into-a-scheduled-report-337m</guid>
      <description>&lt;p&gt;There's a particular kind of work that never shows up in a job description: you ask the questions, you find the answer, and then you do it again next month. Same questions, same joins, newer numbers, and a fresh afternoon gone.&lt;/p&gt;

&lt;p&gt;Databasin One now offers to take that job. When a conversation has done something worth repeating, there's an &lt;strong&gt;Automate this&lt;/strong&gt; action — in the chat sidebar, and on the answer itself. Click it, and the conversation becomes a scheduled report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everything happens over the chat
&lt;/h2&gt;

&lt;p&gt;The modal opens &lt;strong&gt;already filled in&lt;/strong&gt;, because the conversation is the specification. No wizard, no second screen, nothing to rediscover somewhere else.&lt;/p&gt;

&lt;p&gt;It carries the questions you actually asked, the tables you were working against, and — the important part — &lt;strong&gt;the SQL that already ran successfully&lt;/strong&gt;. Not a guess at what you meant. The queries that worked, on your data, minutes ago. The modal says so plainly: &lt;em&gt;carries N queries that already worked in this conversation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What you fill in is the small stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Questions it will keep answering&lt;/strong&gt; — your turns, numbered, editable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How often&lt;/strong&gt; — every weekday morning, every Monday morning, first of the month, or the start of each quarter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who gets it&lt;/strong&gt;, and whether they get an email, a PDF, or both&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Only send when there is something worth reporting&lt;/strong&gt; — for the reports that should stay quiet on a normal week&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Preview before you commit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Preview report&lt;/strong&gt; runs the same request the schedule will run — same skill, same queries, same budgets — against live data, right then. What appears in the modal is not a mockup. It's the document, rendered: &lt;em&gt;this is what each run will deliver, built from live data just now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That matters more than it sounds. A scheduled report that turns out wrong is a special kind of annoying, because you find out on a Monday in front of other people.&lt;/p&gt;

&lt;p&gt;Only then does &lt;strong&gt;Create automation&lt;/strong&gt; save it. The two-step is deliberate — this thing will email other people on a schedule, so nothing is created until you've seen what they'll get.&lt;/p&gt;

&lt;h2&gt;
  
  
  The design is ours, the content is yours
&lt;/h2&gt;

&lt;p&gt;The interesting engineering here isn't that a model can write a report. It's that &lt;strong&gt;the same spec always produces the same document.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model supplies content and structure — the headline figure, which comparison matters, what the finding actually is. It does not supply appearance. It can't: the renderer doesn't sanitize a color out of the model's output, it &lt;strong&gt;rebuilds the document from a fixed vocabulary of named blocks&lt;/strong&gt; and never reads anything else. A stray color, font, or snippet of HTML isn't stripped; it's simply never looked at.&lt;/p&gt;

&lt;p&gt;The vocabulary is ten blocks — a hero figure, stat tiles, sections, prose, a composition bar, charts, report-card tables, callouts, bullets, and a fine-print block for sources and row counts. Series colors are positional, so the model never names one. Chart types are an enum, and anything unrecognized becomes a column chart rather than an argument.&lt;/p&gt;

&lt;p&gt;There's a nice detail in there: a stat's delta is colored by &lt;strong&gt;what it means, not by its sign&lt;/strong&gt;. Costs up 8% and revenue up 8% are not the same news. Unstated, it renders neutral rather than guessing.&lt;/p&gt;

&lt;p&gt;And if a spec comes back malformed, the report is rejected wholesale and the run falls back to the plain markdown it always sent. There is no half-rendered document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reports that survive being printed
&lt;/h2&gt;

&lt;p&gt;Every chart is drawn as an image at twice its display size and embedded directly in the document, which is why the PDF looks like a document rather than a web page that lost a fight with a printer. The whole layout is built to survive the trip from HTML to PDF intact.&lt;/p&gt;

&lt;p&gt;Ask for &lt;strong&gt;both&lt;/strong&gt; in the modal and the styled report arrives as the email body &lt;em&gt;and&lt;/em&gt; as a PDF attachment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same machinery, just easier to reach
&lt;/h2&gt;

&lt;p&gt;None of this is a separate product. It creates an ordinary agent automation running an ordinary skill, on the same canvas as your SQL, dbt, notebook, and OCR tasks — same read-only tools, same query budgets, same audit trail per run. You can open it later and edit it like anything else.&lt;/p&gt;

&lt;p&gt;And you can go the other way: &lt;strong&gt;Report Composer&lt;/strong&gt; sits in the skills library as a preset, so you can copy it into any agent task you build by hand — which is also how you point it at Slack, Teams, or a write-back to your lakehouse instead of email.&lt;/p&gt;

&lt;p&gt;What changed is the distance between having a good answer and having it forever. It used to be a project. Now it's a button.&lt;/p&gt;

&lt;p&gt;Ask Databasin One something worth asking twice, then look for &lt;strong&gt;Automate this&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agent skills, rewritten: see it, name it, own it</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sat, 08 Aug 2026 19:55:18 +0000</pubDate>
      <link>https://dev.to/databasin/agent-skills-rewritten-see-it-name-it-own-it-3di7</link>
      <guid>https://dev.to/databasin/agent-skills-rewritten-see-it-name-it-own-it-3di7</guid>
      <description>&lt;p&gt;When we shipped AI agents as an automation task type, a skill was something you picked from a dropdown and hoped for the best. You could see its name and one line of description. You couldn't see what it actually told the agent to do, you couldn't change it without an admin, and a skill written in one project was invisible in every other one.&lt;/p&gt;

&lt;p&gt;This release fixes all of that. &lt;strong&gt;A skill is now a product object you own.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  See it before you run it
&lt;/h2&gt;

&lt;p&gt;Selecting a skill renders its full instructions, read-only, right in the task config. That's the whole system prompt: what it looks at, how it reasons, what it must never do. No more running something you can't read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Name your own copy
&lt;/h2&gt;

&lt;p&gt;Databasin's own skills (executive summary, data-quality summary, anomaly and root-cause explainer) are &lt;strong&gt;gold copies&lt;/strong&gt;. Picking one always makes you a copy, and you name it something meaningful before anything is created. Your library stays yours; ours stays pristine. Your copy keeps its lineage too, so when we improve the original you'll see &lt;em&gt;"update available"&lt;/em&gt; and decide whether to take it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edit it where you use it
&lt;/h2&gt;

&lt;p&gt;A skill you customize inside an automation belongs to that automation. Edit its instructions, its description, and the inputs it asks for, right there in the task. No second screen, and no change in behavior for anybody else. Every save is a new version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose who else gets it
&lt;/h2&gt;

&lt;p&gt;Three scopes, and widening is one click:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Just this automation.&lt;/strong&gt; Your copy, your tuning, invisible in everyone else's picker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This project.&lt;/strong&gt; The team on this data can run it and fork their own&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your whole organization.&lt;/strong&gt; Every project sees it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skills authored in the library default to org-wide, because that's how most teams actually think about them. &lt;strong&gt;Anyone who can work in a project can write one.&lt;/strong&gt; No admin ticket. Admins keep an org-wide governance view of everything that's been built, including the private per-automation tuning, with one-click promotion for the ones worth sharing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills now declare their own inputs
&lt;/h2&gt;

&lt;p&gt;Previously every skill asked for the same three things — a table, some starter SQL, a prompt — whether it needed them or not. Now a skill declares its own fields, and the task form is generated from them: table pickers, dropdowns, numbers, free text, whatever it actually needs. Multi-table selections now reach the agent intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same guardrails, same blast radius
&lt;/h2&gt;

&lt;p&gt;None of this widens what an agent can do. Still three read-only tools, still SELECT-only on every query, still your turn limit and query budget, still a full audit trail per run. The data connection is chosen by the &lt;em&gt;task&lt;/em&gt;, never by the skill. A skill anyone can write is still a skill that can only read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.databasin.ai/agents/" rel="noopener noreferrer"&gt;See how agents work →&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Live sources: query your tools the moment they connect — no sync required</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sat, 08 Aug 2026 19:54:43 +0000</pubDate>
      <link>https://dev.to/databasin/live-sources-query-your-tools-the-moment-they-connect-no-sync-required-l22</link>
      <guid>https://dev.to/databasin/live-sources-query-your-tools-the-moment-they-connect-no-sync-required-l22</guid>
      <description>&lt;p&gt;Until today, every source followed the same path: connect, sync, then query. &lt;strong&gt;Live sources&lt;/strong&gt; removes the middle step.&lt;/p&gt;

&lt;p&gt;Connect a supported source and it shows up as live tables the moment credentials pass, with no pipeline and no waiting for a first sync:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;company&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;open_pipeline&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;live&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hubspot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deals&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;stage&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s1"&gt;'closedlost'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;company&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;open_pipeline&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That query runs &lt;strong&gt;directly against the API&lt;/strong&gt;, right now, with your filters pushed down to the source where it supports them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's live
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SaaS tools&lt;/strong&gt;, rolling out now across the native connector catalog. The product shows you exactly which of your sources support live; everything supports sync&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Databases:&lt;/strong&gt; Postgres, MySQL, MariaDB, SQL Server, Oracle, and Snowflake federate the same way, as live catalogs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everywhere you query.&lt;/strong&gt; Live tables work in the SQL editor, notebooks, and Databasin One, and they join your synced lakehouse tables in a single statement&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Live and sync are partners, not rivals
&lt;/h2&gt;

&lt;p&gt;Live is built for the first hour: exploration, quick questions, "is this data any good?" You get insight in minutes instead of after the first pipeline run. Sync is built for everything after — full history, big scans, gold views, dashboards that need to be fast at any volume. Connect once, use both.&lt;/p&gt;

&lt;p&gt;Ask your first question before your first sync finishes. &lt;a href="https://databasin.cloud/signup?ref=live-sources" rel="noopener noreferrer"&gt;Try it now&lt;/a&gt;: $50 in credit, no card.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Express signup: one email field, and your workspace is waiting</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sat, 08 Aug 2026 19:54:39 +0000</pubDate>
      <link>https://dev.to/databasin/express-signup-one-email-field-and-your-workspace-is-waiting-2im4</link>
      <guid>https://dev.to/databasin/express-signup-one-email-field-and-your-workspace-is-waiting-2im4</guid>
      <description>&lt;p&gt;Getting started used to mean a signup form. Now it means &lt;strong&gt;one field&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The box turns up all over databasin.ai: the hero, the sticky bar, any page. Type your email and click once. We build your workspace and send your sign-in link. That's the whole flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your email&lt;/strong&gt;, the only thing we ask for up front&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check your inbox&lt;/strong&gt; for the sign-in link, which arrives from &lt;a href="mailto:welcome@databasin.ai"&gt;welcome@databasin.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sign in with Google or Microsoft.&lt;/strong&gt; Name your organization on first login and you're looking at your own workspace with &lt;strong&gt;$50 in credit&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No credit card. No company-size dropdown. No "a member of our team will reach out."&lt;/p&gt;

&lt;p&gt;Already have an account? The same field recognizes you and sends a sign-in link instead — it's the fastest way back in, too.&lt;/p&gt;

&lt;p&gt;Five minutes from the email field to your first cited answer. &lt;a href="https://databasin.cloud/signup?ref=news-express" rel="noopener noreferrer"&gt;The field is right here.&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI agents join Automations: put a skill on a schedule</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sat, 08 Aug 2026 19:54:02 +0000</pubDate>
      <link>https://dev.to/databasin/ai-agents-join-automations-put-a-skill-on-a-schedule-5b5d</link>
      <guid>https://dev.to/databasin/ai-agents-join-automations-put-a-skill-on-a-schedule-5b5d</guid>
      <description>&lt;p&gt;Databasin One answers questions when you ask. As of this release, it also works when you don't: &lt;strong&gt;AI agents are now a task type in Automations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;skill&lt;/strong&gt; is a versioned, shareable package of instructions. An agent task runs one against your governed data, on your schedule, in your workflow. Chain it after your pipelines refresh; deliver what it produces to email, Slack, or Teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starter skills, ready to schedule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Executive summary&lt;/strong&gt; reads the fresh numbers, writes the narrative, builds the charts, ships the PDF. Monday, 7am, already in Slack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data-quality check&lt;/strong&gt; sweeps your tables for gaps, drift, and surprises, and files the report&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anomaly explanation&lt;/strong&gt; takes a metric that moved, traces which segment and which source, and shows the query that proves it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skills are managed like code. They're versioned, shareable across the team, and curated by your admins. Run one with a click in Databasin One, or let an automation run it forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation you can audit
&lt;/h2&gt;

&lt;p&gt;Agents run with guardrails, not vibes: &lt;strong&gt;read-only tools, query budgets, and row caps&lt;/strong&gt;. Every run writes a full audit trail of what it read, what it ran, and what it produced. If a number's in the summary, the receipt is in the log.&lt;/p&gt;

&lt;p&gt;One more task card on the same canvas as your SQL, dbt, and notebook tasks — drag it into a stage and go.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Two weeks of polish: global dashboard filters, connection credentials, Doris everywhere</title>
      <dc:creator>Databasin News</dc:creator>
      <pubDate>Sat, 08 Aug 2026 19:53:56 +0000</pubDate>
      <link>https://dev.to/databasin/two-weeks-of-polish-global-dashboard-filters-connection-credentials-doris-everywhere-327j</link>
      <guid>https://dev.to/databasin/two-weeks-of-polish-global-dashboard-filters-connection-credentials-doris-everywhere-327j</guid>
      <description>&lt;p&gt;Not every release is a headline feature. This one is a stack of the small things that make daily work smoother.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dashboards
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global filters&lt;/strong&gt; — one filter bar drives every tile on the dashboard, with a clear-filter pill so you always know what you're looking at.&lt;/li&gt;
&lt;li&gt;Tiles can stretch the full modal width, drag no longer risks closing the view, and the exit affordance is unmistakably labeled.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lakehouse
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connection Credentials viewer&lt;/strong&gt; — connect BI tools, IDEs, or scripts directly to your lakehouse engines. Trino, Apache Doris, Spark, DuckDB and Databricks each get their own credentials, shown sanitized, with key management where the engine supports it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notebooks stream Apache Doris&lt;/strong&gt; results as they're produced, the same as Trino.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cluster dialogs now show the live IP whitelist&lt;/strong&gt;, so you can see who can reach a cluster while you're editing it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SQL editor
&lt;/h2&gt;

&lt;p&gt;The executing-statement highlight now stays on the statement that's actually running, with no more bleed onto the previous line.&lt;/p&gt;

&lt;p&gt;Small fixes, shorter days.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
