{"id":110721,"date":"2026-06-22T12:00:00","date_gmt":"2026-06-22T12:00:00","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=110721"},"modified":"2026-06-15T09:02:22","modified_gmt":"2026-06-15T09:02:22","slug":"i-built-an-application-by-talking-to-ai-heres-what-happened-and-what-i-learned-part-one","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/ai\/i-built-an-application-by-talking-to-ai-heres-what-happened-and-what-i-learned-part-one\/","title":{"rendered":"How I built an app just by talking to an AI LLM &#8211; the good, the bad, and what I&#8217;d do differently next time (part one)"},"content":{"rendered":"\n<p><strong>Like most of you, I&#8217;ve been using AI <a href=\"https:\/\/www.ibm.com\/think\/topics\/large-language-models\" target=\"_blank\" rel=\"noreferrer noopener\">large language models (LLMs)<\/a> at work and at hobby level for a couple of years now. Snippets of code, the odd data conversion, a small database for a presentation.<\/strong><\/p>\n\n\n\n<p><strong>What I hadn&#8217;t done \u2014 and what kept nagging at me \u2014 was build an entire application, end-to-end, through AI. Nothing more, nothing less. So that&#8217;s what <a href=\"https:\/\/www.red-gate.com\/simple-talk\/collections\/how-i-built-an-app-just-by-talking-to-an-ai-llm\/\" target=\"_blank\" rel=\"noreferrer noopener\">this series<\/a> is about. I&#8217;m building a real, small, useful application called dbRosetta, and I&#8217;m doing as much of it as possible by talking to an LLM.<\/strong><\/p>\n\n\n\n<p>The premise is deliberately tiny. Different databases give different names to similar concepts. A <a href=\"https:\/\/www.red-gate.com\/simple-talk\/databases\/sql-server\/t-sql-programming-sql-server\/40-problems-sql-server-stored-procedure\/\" target=\"_blank\" rel=\"noreferrer noopener\">SQL Server stored procedure<\/a> isn&#8217;t quite a <a href=\"https:\/\/www.red-gate.com\/hub\/books\/introduction-to-postgresql-for-the-data-professional\/\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL<\/a> function, but the family resemblance is obvious. dbRosetta is a <a href=\"https:\/\/uk.rosettastone.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rosetta Stone<\/a> for that. Pick a source database, pick a target, type a term, get the equivalent \u2014 plus a link to the docs and a short description. That&#8217;s it. Nothing clever.<\/p>\n\n\n\n<p>So, the app is not the interesting part &#8211; it&#8217;s how the app actually gets built. Let&#8217;s get into it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-before-we-begin-establishing-the-rules\">Before we begin: establishing the rules<\/h2>\n\n\n\n<p>Throughout this series, I&#8217;ll post the prompts and the responses. Anywhere the AI wrote text or code, I&#8217;ll mark it. The repo lives <a href=\"https:\/\/github.com\/ScaryDBA\/dbRosetta\" target=\"_blank\" rel=\"noreferrer noopener\">on my public GitHub<\/a>, under Apache-2.0. The app will run at <a href=\"https:\/\/www.scarydba.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">scarydba.com<\/a> \u2014 I have the most control there, and if I do something silly I won&#8217;t be breaking <a href=\"https:\/\/www.red-gate.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redgate<\/a>. The database is PostgreSQL on <a href=\"https:\/\/www.red-gate.com\/simple-talk\/databases\/postgresql\/getting-started-with-azure-database-for-postgresql-flexible-server\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Flexible Server<\/a>.<\/p>\n\n\n\n<p>For the LLM, I&#8217;m using <a href=\"https:\/\/copilot.microsoft.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Copilot<\/a> (work pays for it, which is reason enough), with <a href=\"https:\/\/github.com\/features\/copilot\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub CoPilot<\/a> inside <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">vsCode<\/a> for code generation, completion and validation. Whenever it <a href=\"https:\/\/www.ibm.com\/think\/topics\/ai-hallucinations\" target=\"_blank\" rel=\"noreferrer noopener\">hallucinates<\/a> or wanders off down a rabbit hole, I&#8217;ll step in. Otherwise, the rule is: let the AI drive as much as it sensibly can. Here&#8217;s my first prompt, and the response it gave me:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Prompt<\/strong><\/td><td><strong>Response<\/strong><\/td><\/tr><tr><td><em>I&#8217;ll be providing design specs and more, but initially, I&#8217;d like you to introduce yourself and your role in the project. Keep it to about three sentences since it&#8217;ll be part of a larger article.<\/em><\/td><td>I am Copilot, an AI development partner here to help design, build, and document dbRosetta. I\u2019ll assist with architecture and schema design, generate production-ready SQL and application code, and craft reusable prompts and CI\/CD workflows. I\u2019ll also review drafts, refine session abstracts, and help translate your design specs into tested, deployable artifacts.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-so-the-current-tool-list-is\">So, the current tool list is:<\/h4>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li>Azure Database for PostgreSQL Flexible Server<br><br><\/li>\n\n\n\n<li>CoPilot<br><br><\/li>\n\n\n\n<li>GitHub CoPilot<br><br><\/li>\n\n\n\n<li>vsCode<br><br><\/li>\n\n\n\n<li>Microsoft PostgreSQL vsCode Extension<br><br><\/li>\n\n\n\n<li><a href=\"https:\/\/www.red-gate.com\/products\/flyway\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redgate Flyway<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<p>That&#8217;s the setup. Where things got interesting is what happened the moment I tried to use it.<\/p>\n\n\n\n<section id=\"my-first-block-block_c84caeade4f5cf0de8a0e48fc348e363\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Accelerate and simplify database development with Redgate<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            Automate time-consuming tasks and support consistent workflows.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/solutions\/use-cases\/productivity-and-workflow-automation\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Learn more: Accelerate and simplify database development with Redgate\">Learn more<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-ai-picked-database-first\">&#8220;The AI picked database first&#8221;<\/h2>\n\n\n\n<p>I&#8217;d assumed I knew how this would start. I&#8217;d write a prompt outlining what dbRosetta needed to do, the AI would suggest a stack, and we&#8217;d start coding. The first decision I expected to make \u2014 and was quietly looking forward to making \u2014 was whether to build code-first or database-first. As a <a href=\"https:\/\/www.red-gate.com\/blog\/the-database-professional-of-the-future-headlines-from-redgates-keynote-at-pass-data-community-summit-2025\/\" target=\"_blank\" rel=\"noreferrer noopener\">DBA<\/a>, you can probably guess where I fell on that.<\/p>\n\n\n\n<p>I never got to make the call. I asked Copilot to recommend an approach, and it came back with a hybrid: start database-first for the canonical examples, build the tooling code-first around it. The relevant bit of its response:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong><em>Short recommendation \u2014 Hybrid, start database-first for examples, support code-first for tooling<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>Start with a database-first approach for the canonical reproducible examples: author baseline schemas and migrations as SQL artifacts that are authoritative. This keeps examples portable, platform-focused, and easy to run in <a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/general\/introduction-to-continuous-integration-servers\/\" target=\"_blank\" rel=\"noreferrer noopener\">CI<\/a> using Dockerized DBs.<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>Build tooling (generators, validators, orchestration) as code-first modules so contributors can extend transformations programmatically.<\/em><\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>Now, in fairness to Copilot, it almost certainly picked up on my preferences from context. I talk databases at it a lot. But the point stands: the AI made the architectural call before I did, and the call was a reasonable one. I went with it. <\/p>\n\n\n\n<p>I wasn&#8217;t so lucky next time around.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-when-ai-runs-away-with-itself\">When AI runs away with itself<\/h2>\n\n\n\n<p><strong>My next prompt took things seriously off the rails. Silly me.<\/strong><\/p>\n\n\n\n<p>I asked Copilot to give me the structure of the prompts I&#8217;d need to actually design the database. That&#8217;s all I wanted &#8211; just a template, or an outline.<\/p>\n\n\n\n<p>What I got back was Copilot deciding we were ready to start coding. I pushed back. It pushed forward. I pushed back again. It kept producing scaffolding, file structures, schema migrations &#8211; things I&#8217;d never asked for and didn&#8217;t want yet. After a few rounds, I gave up trying to nudge and did this:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em><strong>No. Forget all of the previous conversation.<\/strong><\/em><\/p>\n\n\n\n<p><em><strong>Allow me to first define the project: dbRosetta is an example project created in order to write a series of articles, illustrating how a person could use an LLM to create a complete application and database. The core behavior of dbRosetta is simple enough in its first iteration. A person selects the database to translate from, and the database to translate to, for example FROM: PostgreSQL TO: Microsoft SQL Server. <\/strong><\/em><\/p>\n\n\n\n<p><em><strong>They then provide a term, for example &#8216;Function&#8217;. Then that term is translated from the PostgreSQL term to the equivalent SQL Server term, &#8216;Procedure&#8217;. In addition, a link to the appropriate documentation and a short description of the term are provided.<\/strong><\/em><\/p>\n\n\n\n<p><em><strong>The application will run on WordPress. The database will be hosted on Azure PostgreSQL. The app will be built within vsCode using GitHub Copilot driven by inputs constructed here using you.<\/strong><\/em><\/p>\n\n\n\n<p><em><strong>Is that an adequate starting point?<\/strong><\/em><\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-it-mostly-was\">It mostly was&#8230; <\/h4>\n\n\n\n<p>But it also immediately tried to turn that definition into article #1, which I had to head off as well \u2014 I&#8217;m writing the articles, not <em>it<\/em>.<\/p>\n\n\n\n<p>Finally, after a couple more rounds of redirection, we finally landed in the same place: a milestone-mapped series, with each article paired to a reproducible artifact in the repo. Project scope, prompt design, <a href=\"https:\/\/www.red-gate.com\/simple-talk\/blogs\/the-phases-of-database-design\/\" target=\"_blank\" rel=\"noreferrer noopener\">database design<\/a>, deployment, front end, MVP, testing, iteration. That&#8217;s the rough plan.<\/p>\n\n\n\n<p><strong>Lesson one of this experiment, written down properly: <em>an LLM is like a puppy who knows you have treats<\/em>. It&#8217;s desperately, <em>sincerely<\/em> eager to please you. It will absolutely run away with itself if you let it \u2014 and once a concept is in the conversation, getting it back out is genuinely hard.<\/strong><\/p>\n\n\n\n<p>For example, it still keeps trying to slip schema migrations into our discussion &#8211; I never asked for schema migrations. I did, however, mention <em>&#8216;translation&#8217;<\/em> a lot. I bet the vector distance between &#8216;translation&#8217; and &#8216;migration&#8217; in the context of databases is small enough that the model can&#8217;t quite let go. That&#8217;s what these things do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-prompt-template\">The prompt template<\/h2>\n\n\n\n<p>Once the scope was nailed down, I asked for a canonical prompt template \u2014 a single file structure we&#8217;d use for every prompt in the project. I didn&#8217;t specify <em>just <\/em>the template, though, so Copilot promptly started redefining behaviors I&#8217;d already locked down. What followed was another round of &#8220;no, just the template.&#8221;<\/p>\n\n\n\n<p>Eventually we landed somewhere useful. Every prompt in the project lives at <code>prompts\/templates\/&lt;slug&gt;.md<\/code> and follows the same shape: frontmatter (version, author, model settings), then <strong>Intent<\/strong>, <strong>Context<\/strong>, <strong>Input Contract<\/strong>, <strong>Output Contract<\/strong>, <strong>Acceptance Criteria<\/strong>, <strong>Guardrails<\/strong>, the literal template prompt itself, worked examples for both the happy path and an edge case, post-processing checks, and telemetry to record. <\/p>\n\n\n\n<p>The acceptance criteria are the load-bearing part: each one is a testable sentence that maps to a CI assertion. The guardrails matter almost as much.<em>&#8220;Do not fabricate authoritative URLs&#8221;<\/em> is the one I care about most, given the whole point of the app is to link people to real documentation.<\/p>\n\n\n\n<p>I&#8217;ll publish the full template alongside the repo when we get to the database design article. The point worth flagging now is that I made the template <em>before<\/em> writing a single line of schema or code. That feels backwards if you&#8217;re used to writing prompts ad-hoc \u2014 but if every prompt is going to produce an artifact you have to verify, you want the verification rules nailed down before the AI ever generates anything.<\/p>\n\n\n\n<section id=\"my-first-block-block_97afe2f5aa2b4d276bc09529ff50a79f\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Write accurate SQL faster in SSMS with SQL Prompt AI<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            Write or modify queries using natural language, get clear explanations for unfamiliar code, and fix and optimize SQL with ease &#8211; all without leaving SSMS.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/products\/sql-prompt\/#ai-powered-code\" class=\"btn btn--secondary btn--lg\" aria-label=\"Learn more and try for free: Write accurate SQL faster in SSMS with SQL Prompt AI\">Learn more and try for free<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-i-d-tell-you-to-do-differently-in-week-one\">What I&#8217;d tell you to do differently in week one<\/h2>\n\n\n\n<p>A few things stand out, looking back at the first stretch of this:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li><strong>Define the project hard, and define it once<\/strong><br>The single prompt that fixed everything was the <em>&#8216;forget all of the previous conversation<\/em>&#8216; one. If I&#8217;d led with a tight definition in the first place, I&#8217;d have saved myself an hour of redirection.<br><br><\/li>\n\n\n\n<li><strong>Don&#8217;t let the AI write your articles<\/strong><br>This sounds obvious, but is not always obvious in the moment. Copilot will offer, repeatedly. At the end of part two it produced a perfectly competent paragraph summarising what dbRosetta is <em>&#8220;and how it turns an LLM from a black-box assistant into an auditable part of the engineering toolchain.&#8221;<\/em> Which is true, and also exactly the kind of generic LLM marketing prose nobody actually wants to read. I&#8217;m keeping my own voice on these. So should you.<br><br><\/li>\n\n\n\n<li><strong>Watch for concept leakage<\/strong><br>Once a term is in the conversation, expect it to keep reappearing. <em>&#8216;Translation&#8217;<\/em> in my case has bled into &#8216;<em>migration&#8217;<\/em> repeatedly. Don&#8217;t argue with it, though. The fix is to either reset the conversation or add an explicit guardrail at the prompt level.<br><br><\/li>\n\n\n\n<li><strong>Set the acceptance criteria first<\/strong><br>I came close to skipping this. Don&#8217;t. You cannot verify AI-generated output reliably without something concrete to check it against, and the moment you have something concrete to check against, the AI&#8217;s output gets noticeably more disciplined too.<\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-s-next\">What&#8217;s next<\/h2>\n\n\n\n<p>The next article in the series is the one I&#8217;ve been looking forward to writing: actually designing the database. I&#8217;m going to do something slightly mischievous with it \u2014 I&#8217;ll write a prompt for the schema, <em>and<\/em> I&#8217;ll let Copilot generate one of its own, and we&#8217;ll see which produces something I&#8217;d be happier to deploy. Place your bets.<\/p>\n\n\n\n<div id=\"callout-block_be3d78d3b4b95bd12d5ee4d7c559fe62\" class=\"callout alignnone\">\n    <div class=\"child-last:mb-0 child-first:mt-0 bg-gray-50 dark:bg-gray-950 p-4xl my-3xl\">\n\n<p><strong>Follow along with Grant&#8217;s code<\/strong><\/p>\n\n\n\n<p>If you want to follow along with the code rather than just the articles, the repo is at:<br><a href=\"https:\/\/github.com\/ScaryDBA\/dbRosetta\" target=\"_blank\" rel=\"noreferrer noopener\">github.com\/ScaryDBA\/dbRosetta<\/a><\/p>\n\n<\/div>\n<\/div> \n\n\n<section id=\"faq\" class=\"faq-block my-5xl\">\n    <h2>FAQs: Building an app with AI &#8211; part one<\/h2>\n\n                        <h3 class=\"mt-4xl\">1. What is dbRosetta?<\/h3>\n            <div class=\"faq-answer\">\n                <p>dbRosetta is Grant&#8217;s AI\/LLM-built application. It translates database terminology between platforms. A user picks a source database (e.g. PostgreSQL) and a target database (e.g. SQL Server), enters a term like &#8220;function,&#8221; and gets back the equivalent term, a link to official documentation, and a short description.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">2. What tools are being used to build dbRosetta?<\/h3>\n            <div class=\"faq-answer\">\n                <p>The project uses Microsoft Copilot and GitHub Copilot for AI assistance, VS Code as the editor, Azure Database for PostgreSQL Flexible Server for the database, Redgate Flyway for migrations, and WordPress for the front end at scarydba.com.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">3. Should you choose code-first or database-first when building with AI?<\/h3>\n            <div class=\"faq-answer\">\n                <p>For dbRosetta, Copilot recommended a hybrid: database-first for canonical examples (authoritative SQL artifacts that run in CI), and code-first for tooling like generators and validators. The right answer depends on the project, but letting the AI surface a reasoned recommendation is a useful starting point.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">4. How do you stop an LLM from running away with a project?<\/h3>\n            <div class=\"faq-answer\">\n                <p>Define the project tightly upfront and reset the conversation when it drifts. The single most effective prompt during week one was &#8220;forget all of the previous conversation,&#8221; followed by a clear project definition. Vague prompts invite the model to fill gaps with its own assumptions.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">5. What is concept leakage in LLM-driven development?<\/h3>\n            <div class=\"faq-answer\">\n                <p>Concept leakage is when a term introduced earlier in a conversation keeps resurfacing in unrelated responses. In dbRosetta, mentioning &#8220;translation&#8221; repeatedly caused Copilot to drift toward &#8220;schema migration&#8221; suggestions. Fix it by resetting the conversation or adding an explicit guardrail in the prompt.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">6. Why write a prompt template before any code?<\/h3>\n            <div class=\"faq-answer\">\n                <p>A canonical prompt template (intent, context, input\/output contracts, acceptance criteria, guardrails, examples) ensures every AI-generated artifact can be verified the same way. Defining acceptance criteria before generation also produces more disciplined output from the model.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">7. Should you let an LLM write your articles or documentation?<\/h3>\n            <div class=\"faq-answer\">\n                <p>No. LLMs will happily produce competent but generic prose that reads like marketing copy. Keep your own voice on long-form writing and use the AI for the technical artifacts it can verifiably produce.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">8. Where can I follow the dbRosetta project?<\/h3>\n            <div class=\"faq-answer\">\n                <p>The full repo is public on GitHub at <a href=\"https:\/\/github.com\/ScaryDBA\/dbRosetta\" target=\"_blank\" rel=\"noopener\">github.com\/ScaryDBA\/dbRosetta<\/a> under Apache-2.0, and the live app will run at <a href=\"https:\/\/www.scarydba.com\/\" target=\"_blank\" rel=\"noopener\">scarydba.com<\/a>.<\/p>\n            <\/div>\n            <\/section>\n","protected":false},"excerpt":{"rendered":"<p>Building a real app end-to-end with an LLM: lessons from week one of dbRosetta. Why scope, prompt templates, and acceptance criteria matter before code.&hellip;<\/p>\n","protected":false},"author":221792,"featured_media":103500,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[159169,143523,53],"tags":[159075,4168,159395,4150,4151],"coauthors":[6785],"class_list":["post-110721","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-databases","category-featured","tag-ai","tag-database","tag-how-i-built-an-app-ai-llm","tag-sql","tag-sql-server"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/221792"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=110721"}],"version-history":[{"count":8,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110721\/revisions"}],"predecessor-version":[{"id":110738,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110721\/revisions\/110738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/103500"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=110721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=110721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=110721"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=110721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}