<?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>Forem: alingse</title>
    <description>The latest articles on Forem by alingse (@alingse).</description>
    <link>https://forem.com/alingse</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1016661%2Fc155e086-8fc8-4a67-a2aa-117118b137b4.png</url>
      <title>Forem: alingse</title>
      <link>https://forem.com/alingse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alingse"/>
    <language>en</language>
    <item>
      <title>How I Used Claude and Gemini to Build a Commercial Company Search Tool</title>
      <dc:creator>alingse</dc:creator>
      <pubDate>Wed, 03 Sep 2025 14:55:12 +0000</pubDate>
      <link>https://forem.com/alingse/how-i-used-claude-and-gemini-to-build-a-commercial-company-search-tool-3of3</link>
      <guid>https://forem.com/alingse/how-i-used-claude-and-gemini-to-build-a-commercial-company-search-tool-3of3</guid>
      <description>&lt;p&gt;A few weeks ago, a friend of a friend reached out to me asking for help finding logistics companies in Casablanca, Morocco. He wanted me to guide him through writing a Google Maps API program using AI. I suggested he download VSCode and install Cline, but he got stuck on not knowing how to use Python. In the end, I helped him complete the task. It only took a few minutes. He got a CSV with 60 entries, was very satisfied, and paid me 100 yuan for my time.&lt;/p&gt;

&lt;p&gt;This made me realize there's a real market need for this kind of service. So I spent two weeks, 40 conversations, 356 instructions, and 110 commits to build it. And here it is: &lt;a href="https://company.jsonutil.online" rel="noopener noreferrer"&gt;https://company.jsonutil.online&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Website Features
&lt;/h2&gt;

&lt;p&gt;The tool is based on Google Maps APIs. After getting a list of places using the Places API, we use another tool to extract email addresses from their websites (that's another story somday I will write). All this data is returned to users, who can download it in CSV or JSON format, including address, name, phone, website, and email. This allows B2B users to conduct targeted marketing for their valuable products.&lt;/p&gt;

&lt;p&gt;Let me tell you how I built it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Starting with that initial Python script that generated in just minutes&lt;/li&gt;
&lt;li&gt;Building a user interface with index.html&lt;/li&gt;
&lt;li&gt;Extracting core functionality from the Python script and creating server.py&lt;/li&gt;
&lt;li&gt;Using SQLite for the database - simple is enough&lt;/li&gt;
&lt;li&gt;Adding caching functionality - same search conditions always return the same data&lt;/li&gt;
&lt;li&gt;Website email extraction - we integrated another tool's API (that's another story)&lt;/li&gt;
&lt;li&gt;Working on introductions and SEO - having Gemini generate articles, guides, and intro pages&lt;/li&gt;
&lt;li&gt;Adding i18n support&lt;/li&gt;
&lt;li&gt;Some minor performance optimizations&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My AI Conversations
&lt;/h2&gt;

&lt;p&gt;Let's take a look at some of my AI conversations during development.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Please fix the data export functionality.
&amp;gt; I need real-time log printing in each concurrent task.
&amp;gt; You did a great job, it's now taking shape. Can you check if email extraction is concurrent?
&amp;gt; It's not convenient to view on mobile. I want you to support mobile email display effects. Please adjust it. It's better to have fewer large images and large fonts, and provide the most core functionality directly.
&amp;gt; I found the current API is a bit slow. Not suitable for real-time user waiting. You need to add more information in the /stream endpoint.
&amp;gt; Okay, please commit the code.
&amp;gt; Very good, I also need you to clear the previous table data when users click on popular searches.
&amp;gt; You did a great job. But the table display is not very aesthetic now. We want to highlight email information. It's best to have one complete email per row without collapsing. I suggest you compress the table width for ratings and types.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;( these conversations is record by &lt;a href="https://github.com/alingse/ai-cli-log" rel="noopener noreferrer"&gt;ai-cli-log&lt;/a&gt; )&lt;/p&gt;

&lt;p&gt;The familiar blue-purple theme - this is really AI-generated aesthetics, but we liked it and kept it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1km2d0h5wnowmwetbvp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1km2d0h5wnowmwetbvp.png" alt="Search Interface" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, you enter what you want to search for - yoga studios, hardware stores, swimming pools, restaurants, anything works. Then select a city - we chose Phoenix for this example. Click search.&lt;/p&gt;

&lt;p&gt;The system provides a progress bar showing what the server is doing (yes, I had it implement SSE). First, it locates the city, then searches using the API, adds some details, and finally extracts emails from websites. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4sfyahpx662v7ilz7b8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4sfyahpx662v7ilz7b8s.png" alt="SSE supported progress" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07kd3735lsrzu32fiw3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07kd3735lsrzu32fiw3i.png" alt="Email extract" width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When complete, users get a perfect table like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrhtwfimj5hc9lxg1thf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrhtwfimj5hc9lxg1thf.png" alt="Results Table" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Most Impressive Lessons from Development
&lt;/h2&gt;

&lt;p&gt;If you ask me what was most impressive during development:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't optimize too early&lt;/strong&gt; - MVP is MVP, if it works, it works. Although I hear people say AI-created tools are just a few Python files pieced together, I want to say: yes, that's exactly right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple is better than complex&lt;/strong&gt; - enough said.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provide a local environment for AI validation&lt;/strong&gt; - but AI often can't debug because it doesn't know the server's status, like when it was looking for nginx processes on my local machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Everything as code&lt;/strong&gt; - put all configurations in the same repository (like nginx.conf it remove the buffer config for sse api response). It can better debug the full picture. I guess this is what they call context engineering.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That's all for now. I hope people will use it. If it proves useful, I'll add registration, login, task management, and history features. Of course, I ultimately hope to help users, and maybe some will even pay to use it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What do you think? Have you built similar tools using AI assistants? I'd love to hear about your experiences in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>cloud</category>
      <category>sideprojects</category>
      <category>commercial</category>
    </item>
    <item>
      <title>Supercharge Your CLI Workflow: Never Lose a Genius AI-Powered Idea Again with ai-cli-log</title>
      <dc:creator>alingse</dc:creator>
      <pubDate>Tue, 15 Jul 2025 00:39:26 +0000</pubDate>
      <link>https://forem.com/alingse/supercharge-your-cli-workflow-never-lose-a-genius-ai-powered-idea-again-with-ai-cli-log-38pj</link>
      <guid>https://forem.com/alingse/supercharge-your-cli-workflow-never-lose-a-genius-ai-powered-idea-again-with-ai-cli-log-38pj</guid>
      <description>&lt;p&gt;We've all been there. You're deep in a terminal session, wrestling with a complex problem. You turn to an AI assistant like Google's Gemini or Anthropic's Claude directly in your CLI. After a few prompts, you strike gold—a perfect code snippet, a brilliant debugging strategy, or a complex command you'll need again.&lt;/p&gt;

&lt;p&gt;Then... you close the terminal. Or you scroll up, but the buffer is gone. That stroke of genius is lost to the digital ether. Frustrating, right?&lt;/p&gt;

&lt;p&gt;What if you could have a perfect, replayable, and—most importantly—intelligently-named log of every single one of these sessions?&lt;/p&gt;

&lt;p&gt;That's exactly why I created &lt;code&gt;ai-cli-log&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is ai-cli-log?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ai-cli-log&lt;/code&gt; is a command-line tool that wraps your terminal commands, seamlessly recording everything from your input to the AI's rendered output. It's designed to be a "fire-and-forget" solution to a problem many developers face daily.&lt;/p&gt;

&lt;p&gt;It’s built with Node.js and TypeScript, and it leverages some clever tech to ensure the logs are not just text dumps, but faithful representations of what you actually saw on screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj44t6387jsw5mvalmnom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj44t6387jsw5mvalmnom.png" alt="record file in my repo" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;see also &lt;a href="https://github.com/alingse/ai-cli-log/blob/main/.ai-cli-log/gemini-20250714-142129-refactor-readme-structure.txt" rel="noopener noreferrer"&gt;https://github.com/alingse/ai-cli-log/blob/main/.ai-cli-log/gemini-20250714-142129-refactor-readme-structure.txt&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Magic: Not Just Logging, but &lt;em&gt;Smart&lt;/em&gt; Logging
&lt;/h3&gt;

&lt;p&gt;Here’s what makes &lt;code&gt;ai-cli-log&lt;/code&gt; more than just another script redirecting stdout to a file.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Lossless, Interactive Session Capture
&lt;/h4&gt;

&lt;p&gt;Modern CLIs are complex. They have spinners, progress bars, and dynamic prompts that rewrite the screen. A simple &lt;code&gt;&amp;gt;&lt;/code&gt; redirect misses all of that.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ai-cli-log&lt;/code&gt; uses &lt;code&gt;node-pty&lt;/code&gt; to create a pseudo-terminal (pty) and &lt;code&gt;@xterm/headless&lt;/code&gt; to run a headless terminal emulator. This means it interprets all the ANSI escape codes for colors, cursor movements, and screen clearing. The final log file is a pristine record of the &lt;em&gt;rendered&lt;/em&gt; output, looking exactly like it did in your live session.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. AI-Powered Filenames
&lt;/h4&gt;

&lt;p&gt;This is the killer feature. A folder full of &lt;code&gt;session-20250715-103000.txt&lt;/code&gt; isn't very helpful. &lt;code&gt;ai-cli-log&lt;/code&gt; can use an AI to summarize your session and create a descriptive, human-readable filename.&lt;/p&gt;

&lt;p&gt;Imagine turning this:&lt;br&gt;
&lt;code&gt;gemini-20250715-103215.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Into this:&lt;br&gt;
&lt;code&gt;gemini-20250715-103215-refactor-database-schema-with-migrations.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now you can find the exact session you're looking for with a simple file search.&lt;/p&gt;
&lt;h3&gt;
  
  
  Getting Started in 60 Seconds
&lt;/h3&gt;

&lt;p&gt;Ready to try it? It's simple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Installation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; ai-cli-log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Basic Logging&lt;/strong&gt;&lt;br&gt;
Just prefix the command you want to run with &lt;code&gt;ai-cli-log run&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ai-cli-log run gemini
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you exit the Gemini session, you'll find a new log file in a &lt;code&gt;.ai-cli-log&lt;/code&gt; directory in your project folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;╭───────────╮
&lt;/span&gt;&lt;span class="gp"&gt;│  &amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/quit  │
&lt;span class="go"&gt;╰───────────╯

╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                                                │
│  Agent powering down. Goodbye!                                                                                                 │
│                                                                                                                                │
│  Performance                                                                                                                   │
│  Wall Time:                  4.7s                                                                                              │
│  Agent Active:               0s                                                                                                │
│    » API Time:               0s (0.0%)                                                                                         │
│    » Tool Time:              0s (0.0%)                                                                                         │
│                                                                                                                                │
│                                                                                                                                │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯


Session logged to .ai-cli-log/gemini-20250715-083847.txt
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Enable AI Summaries&lt;/strong&gt;&lt;br&gt;
To get those smart filenames, use the &lt;code&gt;-s&lt;/code&gt; (&lt;code&gt;--with-summary&lt;/code&gt;) flag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use the default summarizer&lt;/span&gt;
ai-cli-log &lt;span class="nt"&gt;-s&lt;/span&gt; run gemini

&lt;span class="c"&gt;# Specify a summarizer (more on this below)&lt;/span&gt;
ai-cli-log &lt;span class="nt"&gt;--by&lt;/span&gt; gemini-pro run gemini
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, when your session ends, &lt;code&gt;ai-cli-log&lt;/code&gt; will send the transcript to your configured AI, get a summary, and use it in the filename.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;
(Session content long, sampling first and last 50 lines for summary)

Summary by ollama (took 13.9s): "interaction-summary"

Session logged to .ai-cli-log/gemini-20250715-083306-interaction-summary.txt
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration: Make It Your Own
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ai-cli-log&lt;/code&gt; is designed to be flexible. You can configure different AI backends, prompts, and models.&lt;/p&gt;

&lt;p&gt;Run the interactive setup to get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ai-cli-log init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will scan for installed AI tools (&lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;ollama&lt;/code&gt;, &lt;code&gt;sgpt&lt;/code&gt;, etc.) and create a &lt;code&gt;config.json&lt;/code&gt; file for you, either globally (&lt;code&gt;~/.config/ai-cli-log/&lt;/code&gt;) or locally (&lt;code&gt;./.ai-cli-log/&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Here’s a peek at what the configuration looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summarizer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"default"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summarizers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You are a log summarizer. Your response MUST be a valid JSON object with one key: "&lt;/span&gt;&lt;span class="err"&gt;summary&lt;/span&gt;&lt;span class="s2"&gt;" (a 3-5 word, lowercase, filename-friendly phrase). Example: {"&lt;/span&gt;&lt;span class="err"&gt;summary&lt;/span&gt;&lt;span class="s2"&gt;": "&lt;/span&gt;&lt;span class="err"&gt;refactor-database-schema&lt;/span&gt;&lt;span class="s2"&gt;"}. The session content is:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"maxLines"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ollama-llama3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ollama"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"llama3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can define multiple "summarizers" and easily switch between them using the &lt;code&gt;--by &amp;lt;name&amp;gt;&lt;/code&gt; flag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ai-cli-log&lt;/code&gt; was born from a personal need, but it solves a universal problem for anyone working with AI in the terminal. It’s a small utility that has a massive impact on workflow, turning transient conversations into a permanent, searchable knowledge base.&lt;/p&gt;

&lt;p&gt;Give it a try and never lose a great idea again.&lt;/p&gt;

&lt;p&gt;Check out the project on GitHub: &lt;a href="https://github.com/alingse/ai-cli-log" rel="noopener noreferrer"&gt;https://github.com/alingse/ai-cli-log&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>productivity</category>
      <category>cli</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
