<?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: Angel Fernandez Temiño</title>
    <description>The latest articles on DEV Community by Angel Fernandez Temiño (@angel_fts).</description>
    <link>https://dev.to/angel_fts</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%2F4234807%2Fd5348c65-3d67-4ea7-bc0d-7a67ae35df58.jpeg</url>
      <title>DEV Community: Angel Fernandez Temiño</title>
      <link>https://dev.to/angel_fts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/angel_fts"/>
    <language>en</language>
    <item>
      <title>A planner that cannot invent a capability</title>
      <dc:creator>Angel Fernandez Temiño</dc:creator>
      <pubDate>Mon, 09 Nov 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/angel_fts/a-planner-that-cannot-invent-a-capability-42om</link>
      <guid>https://dev.to/angel_fts/a-planner-that-cannot-invent-a-capability-42om</guid>
      <description>&lt;p&gt;RPA projects tend to start the same way. The client sends the process definition: a Word document with a purpose, a table of steps and their business rules, sometimes a PDF, sometimes a spreadsheet, sometimes all three. The first days go into finding out which of those steps the estate already covers, which do not exist yet, and writing the design.&lt;/p&gt;

&lt;p&gt;A model could draft that design in a minute. The reason nobody lets it is that it will invent a workflow that sounds right. &lt;code&gt;ArchiveInvoicePDF&lt;/code&gt; reads like something the estate has. It does not, and you find out in week three.&lt;/p&gt;

&lt;p&gt;My day job is building GenAI platforms that run in production, and the rule there is the one you apply to any distributed system: never act on an output you cannot check. So I built the planner the other way round. The model proposes; a deterministic resolver checks every step against a catalog of the functions that exist, and a step nothing can do is reported as &lt;code&gt;missing&lt;/code&gt;. This post walks through it on the smallest example in the repository, with the real output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The catalog
&lt;/h2&gt;

&lt;p&gt;Before planning anything, the sources are read into a catalog. &lt;a href="https://github.com/afernandeztem/FlowGlyph" rel="noopener noreferrer"&gt;FlowGlyph&lt;/a&gt; reads UiPath projects, SAP OData &lt;code&gt;$metadata&lt;/code&gt;, SAP Cloud Integration iFlows, SAP Build, BPMN, n8n exports and OpenAPI documents with parsers, not with a model, and turns every workflow, service operation and API call into a typed &lt;em&gt;capability&lt;/em&gt;: inputs, outputs, what it does to the world, and whether a retry is a repeat.&lt;/p&gt;

&lt;p&gt;The example uses a UiPath project and an OpenAPI document, merged into one catalog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;flowglyph&lt;/span&gt;

&lt;span class="n"&gt;uipath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flowglyph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tests/fixtures/synthetic/invoices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flowglyph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tests/fixtures/openapi/payments.yaml&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;uipath&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;examples/invoice-processing/catalog&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The catalog is plain files you can commit: &lt;code&gt;catalog.jsonl&lt;/code&gt;, &lt;code&gt;graph.json&lt;/code&gt;, a lock file, and one Markdown card per function. Eighteen capabilities in this one: four UiPath workflows, seven API operations, and seven activity types that are documented but cannot run on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The requirements
&lt;/h2&gt;

&lt;p&gt;The requirements file is four sentences, the kind of thing a client writes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Supplier invoice intake&lt;/span&gt;

When an invoice arrives, check that the vendor exists in our records.

If the amount is above 10,000 EUR, ask the finance approver before going on.

Then create the invoice in the payments system, using the invoice reference so that a retry
never books it twice, and archive the PDF.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A PDF or a Word file works the same way: &lt;code&gt;flowglyph plan&lt;/code&gt; reads paragraphs and tables from &lt;code&gt;.pdf&lt;/code&gt; and &lt;code&gt;.docx&lt;/code&gt;, one table per sheet from &lt;code&gt;.xlsx&lt;/code&gt; and &lt;code&gt;.csv&lt;/code&gt;, and a whole folder of them in name order. A scanned PDF without a text layer is refused, not guessed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The plan
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flowglyph plan examples/invoice-processing/requirements.md examples/invoice-processing/catalog &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; examples/invoice-processing/out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--via&lt;/code&gt; picks the model: the Anthropic API by default, or the coding assistant you are already signed in to (&lt;code&gt;claude-code&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;cursor&lt;/code&gt;), or any OpenAI-compatible server (Ollama, vLLM, LM Studio). The model never sees your sources. It sees the requirements and a shortlist of candidate functions picked by BM25 over the catalog, and it has to answer in a strict JSON Schema.&lt;/p&gt;

&lt;p&gt;Three things happen in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Shortlist.&lt;/strong&gt; BM25 over the cards finds the candidates for each sentence of the requirements. The model is not handed eighteen functions here, and it would not be handed three thousand in a real estate either.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proposal.&lt;/strong&gt; The model writes &lt;code&gt;workflow.plan.yaml&lt;/code&gt;: a goal, typed inputs, steps with an intent, a capability id, arguments bound to inputs or to earlier steps, conditions, and a list of assumptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution.&lt;/strong&gt; The resolver checks every step: the capability id exists in the catalog; every required input of that capability is filled; each argument has the type the input declares; every reference points to an earlier step. Anything that fails is a problem on the step. A step the model could not assign to any candidate is a gap.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the proposal for the booking step. The model picked the API operation over the UiPath workflow, and said why:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;create_invoice&lt;/span&gt;
  &lt;span class="na"&gt;intent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Create the invoice in the payments system, with the invoice reference as idempotency key so&lt;/span&gt;
    &lt;span class="s"&gt;a retry never books it twice.&lt;/span&gt;
  &lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openapi/Payments_API/createInvoice&lt;/span&gt;
  &lt;span class="na"&gt;arguments&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Idempotency-Key&lt;/span&gt;
    &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;workflow_input&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;invoice_reference&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;body&lt;/span&gt;
    &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;workflow_input&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;invoice&lt;/span&gt;
  &lt;span class="na"&gt;after&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;validate_vendor&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;request_approval&lt;/span&gt;
  &lt;span class="na"&gt;condition&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;validate_vendor.out_Exists == &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;any&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;assumptions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;I used createInvoice from the Payments API instead of uipath/Invoices/Main or BookInvoice, because it&lt;/span&gt;
  &lt;span class="s"&gt;is the only candidate with key-based idempotency, which a retry-safe booking needs.&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;The candidate list has no capability for archiving the PDF, so that step has none assigned.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That second assumption is the whole point. The archive step comes out like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;archive_pdf&lt;/span&gt;
  &lt;span class="na"&gt;intent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Archive the invoice PDF once the invoice is created. No candidate capability does this; a document&lt;/span&gt;
    &lt;span class="s"&gt;archive capability that takes the PDF location (and ideally the invoice reference) is missing.&lt;/span&gt;
  &lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;arguments&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the checked workflow, &lt;code&gt;workflow.ir.yaml&lt;/code&gt;, says so at the top:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;needs attention&lt;/span&gt;
&lt;span class="na"&gt;problems&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;
&lt;span class="na"&gt;unresolved&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;archive_pdf&lt;/span&gt;
&lt;span class="na"&gt;warnings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;request_approval&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;has&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;side&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;effects:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;run&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;it&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;with&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;an&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;idempotency&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;key&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;so&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;retries&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;are&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;safe'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No problems: every resolved step exists, is fully bound and typed. One unresolved step: nothing in the sources archives a PDF. One warning: the approval step changes something and nothing guarantees a retry is safe, so run it with a key. The plan is the design, the gap list and the first line of the estimate, on day one, in the client's own words.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same thing from the Word document
&lt;/h2&gt;

&lt;p&gt;In the README the same planner reads a two-page Word process definition with a four-row steps table. Two of the client's steps come back as &lt;code&gt;missing&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Book emailed supplier invoices without creating duplicates, then archive the PDF
 Step               Capability                             Intent
 validate_vendor    uipath/Invoices/Steps/ValidateVendor   Check that the vendor on the invoice exists in our records.
 notify_purchasing  missing                                Notify purchasing that the vendor is unknown and stop processing the invoice.
 request_approval   uipath/Invoices/Steps/RequestApproval  Ask the finance approver for approval before booking a high-value invoice.
 create_invoice     openapi/Payments_API/createInvoice     Create the invoice in the payments system, keyed by the invoice reference so a retry never books it twice.
 archive_pdf        missing                                Archive the invoice PDF in the document store with a 10-year retention period.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing notifies purchasing, nothing archives a PDF. Those two go straight into the backlog, and nothing was invented to fill them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening it in Studio
&lt;/h2&gt;

&lt;p&gt;The resolved part does not stay as YAML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flowglyph compile plan/workflow.ir.yaml &lt;span class="nt"&gt;--catalog&lt;/span&gt; catalog &lt;span class="nt"&gt;--to&lt;/span&gt; xaml &lt;span class="nt"&gt;-o&lt;/span&gt; Main.xaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  warning conditions are copied as written; rewrite them as Visual Basic expressions in Studio
Compiled plan/book-emailed-supplier-invoices-without-creating-duplicates-then-archive-the-pdf into Main.xaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Main.xaml&lt;/code&gt; is a Flowchart with each resolved step as an &lt;code&gt;InvokeWorkflowFile&lt;/code&gt;, its arguments ready to bind, a &lt;code&gt;FlowDecision&lt;/code&gt; per condition, and a &lt;code&gt;Comment&lt;/code&gt; where each missing step goes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;ui:Comment&lt;/span&gt; &lt;span class="na"&gt;DisplayName=&lt;/span&gt;&lt;span class="s"&gt;"Notify purchasing that the vendor is unknown and stop processing the invoice."&lt;/span&gt;
            &lt;span class="na"&gt;Text=&lt;/span&gt;&lt;span class="s"&gt;"...: no capability does this yet"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--to bpmn&lt;/code&gt; gives the process owner the same workflow as BPMN 2.0 with a diagram. A coding agent with the project's activity cards (another command, &lt;code&gt;flowglyph context&lt;/code&gt;, writes them from the project) builds the two missing steps from there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;p&gt;It does not judge whether a resolved step is the right one, only that it exists, fits and is typed. The model chose &lt;code&gt;createInvoice&lt;/code&gt; over &lt;code&gt;BookInvoice&lt;/code&gt; for a good reason and said so, but a worse choice that still type-checks would pass. Read the assumptions.&lt;/p&gt;

&lt;p&gt;Conditions are copied as written. The resolver checks that they reference existing steps and inputs; it does not evaluate them, and the XAML compiler tells you to rewrite them as Visual Basic.&lt;/p&gt;

&lt;p&gt;It needs a model, any of the ones above, and the quality of the proposal is the model's. What the resolver guarantees is narrower and, I think, more useful: nothing in the output exists only in the model's head.&lt;/p&gt;

&lt;p&gt;And it is alpha. The IR is at 0.4 and may change; the adapters have run on vendor templates and synthetic projects, not on a real client estate yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The quickest test needs no clone and no model. It reads UiPath's own template and tells you which workflows are safe to run twice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"flowglyph[cli]"&lt;/span&gt;
flowglyph idempotency https://github.com/UiPath/ReFrameWork &lt;span class="nt"&gt;--kind&lt;/span&gt; workflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the planner on your own sources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"flowglyph[all]"&lt;/span&gt;
flowglyph extract ./your-automations &lt;span class="nt"&gt;-o&lt;/span&gt; catalog
flowglyph plan requirements.md catalog &lt;span class="nt"&gt;-o&lt;/span&gt; plan &lt;span class="nt"&gt;--via&lt;/span&gt; claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code, the examples and every output above are at &lt;a href="https://github.com/afernandeztem/FlowGlyph" rel="noopener noreferrer"&gt;github.com/afernandeztem/FlowGlyph&lt;/a&gt;, Apache-2.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Help shape it
&lt;/h2&gt;

&lt;p&gt;The most useful thing you can send is a file it gets wrong: an issue with the XAML, the EDMX or the BPMN that broke. Use cases I have not thought of go to the repo's &lt;a href="https://github.com/afernandeztem/FlowGlyph/discussions/categories/ideas" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;. And there are six &lt;a href="https://github.com/afernandeztem/FlowGlyph/labels/good%20first%20issue" rel="noopener noreferrer"&gt;good first issues&lt;/a&gt;, from a Power Automate adapter to an n8n example.&lt;/p&gt;

&lt;p&gt;What I would like to know from people who have put a model in front of a real estate: how do you keep it from inventing functions, and does a gap list on day one change how you scope the work?&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
