<?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: Soroush Javed Sulehri</title>
    <description>The latest articles on DEV Community by Soroush Javed Sulehri (@saroushjaved).</description>
    <link>https://dev.to/saroushjaved</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%2F454184%2Ff038459b-fcd7-4a65-85f8-4445c3b4ea0e.png</url>
      <title>DEV Community: Soroush Javed Sulehri</title>
      <link>https://dev.to/saroushjaved</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saroushjaved"/>
    <language>en</language>
    <item>
      <title>I optimized my Knowledge Management using AI - Ella: A Memory Browser and Knowledge Management System</title>
      <dc:creator>Soroush Javed Sulehri</dc:creator>
      <pubDate>Mon, 20 Apr 2026 22:06:30 +0000</pubDate>
      <link>https://dev.to/saroushjaved/i-optimized-my-knowledge-management-using-ai-ella-a-memory-browser-and-knowledge-management-3abg</link>
      <guid>https://dev.to/saroushjaved/i-optimized-my-knowledge-management-using-ai-ella-a-memory-browser-and-knowledge-management-3abg</guid>
      <description>&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%2Fwbukmo6c634119g6t11d.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%2Fwbukmo6c634119g6t11d.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Story Behind ELLA
&lt;/h1&gt;

&lt;p&gt;Ten days ago, my phone rang. An unknown number flashed on the screen. When I answered, it was a student from my alma mater asking if I still had my Digital Signal Processing notes.&lt;/p&gt;

&lt;p&gt;For context, I have always been a habitual and thorough note-taker. I write cleanly, organize things carefully, and usually keep records of what I study. One side effect of that is that years after graduation, my phone still buzzes from juniors asking for notes, summaries, or old course material.&lt;/p&gt;

&lt;p&gt;This time, I was sure I had the files. But finding them was another story. It took me three days to trace the digital copy and send it over. And that was the moment something clicked.&lt;/p&gt;

&lt;p&gt;Even after graduating, I still needed regular access to my notes. Sometimes it was to help juniors. Sometimes it was to prepare for interviews. Sometimes it was simply because I wanted to revisit something while learning a related topic. But every few months, I would end up wasting hours searching through folders, drives, filenames, and half-forgotten locations. And many times, I still could not find what I needed.&lt;/p&gt;

&lt;p&gt;It was not just my notes, either. Important documents, PDFs, screenshots, references, and project files kept disappearing into the maze of my PC. Not deleted. Not lost forever. Just buried deep enough to become practically unusable.&lt;/p&gt;

&lt;p&gt;And that bothered me. Because the problem was never a lack of information. &lt;strong&gt;The problem was recall.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I knew I had seen it before. I knew I had saved it. I knew it existed somewhere in my archive. I just could not recover it when it mattered. So I did what I usually do when something starts bothering me enough: I took out a pen and paper and started sketching.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What if I could build something that did not just act like another generic note management platform, but actually solved a problem I personally kept running into? What if it could help me recover what I already know?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is how ELLA was born.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing ELLA
&lt;/h2&gt;

&lt;p&gt;ELLA is a local-first Memory Browser and Knowledge Management System built to help users recover, verify, and reuse knowledge from their personal archive. It is not designed to be a generic chatbot, a productivity dashboard, or a note-taking replacement. Its purpose is much narrower, and much more practical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Home Page: Under Development Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified Organization:&lt;/strong&gt; Keep your files anywhere on the PC but have them organized inside a common Knowledge Management System.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Retrieval:&lt;/strong&gt; Search and find what you already know or want to retrieve anytime.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ELLA is for those moments when you think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I know I have seen this before.&lt;/em&gt; &amp;gt; &lt;em&gt;I know I saved it somewhere.&lt;/em&gt; &amp;gt; &lt;em&gt;I just need the exact file, note, PDF, screenshot, or reference again."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of forcing users to remember exact filenames or folder paths, ELLA helps them search with vague memory fragments, partial phrases, topics, metadata, or whatever clue they still have. It then shows results with evidence: &lt;strong&gt;why the result matched, what file it came from, where it lives, and how to reopen the original source.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Think This Matters
&lt;/h2&gt;

&lt;p&gt;We save more than ever before—lecture notes, research papers, work documents, screenshots, contracts, PDFs, code snippets, presentations, personal references, and ideas we swear we will revisit later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But storing information is not the same as being able to retrieve it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For students, researchers, engineers, writers, designers, consultants, and other knowledge workers, personal archives become massive over time. And once that archive grows large enough, traditional folder structures start failing. Search becomes inconsistent. Memory becomes fuzzy. Useful knowledge gets trapped in a place that technically belongs to you, but functionally feels inaccessible.&lt;/p&gt;

&lt;p&gt;I did not want to build something that generates more noise. I wanted to build something that reduces friction between memory and action. Something that helps you move from:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I vaguely remember this."&lt;/em&gt; &lt;strong&gt;→ to →&lt;/strong&gt; &lt;em&gt;"Here is the exact source."&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why “Local-First” Matters to Me
&lt;/h2&gt;

&lt;p&gt;I wanted ELLA to feel trustworthy. That is why its direction is local-first wherever the architecture allows. Your archive remains under your control. &lt;/p&gt;

&lt;p&gt;The product is built around ownership, privacy, and transparency, not around turning your knowledge into an opaque black box. If ELLA shows you a result, it should also help you understand &lt;em&gt;why&lt;/em&gt; it showed up. If it indexes something, you should know that it indexed it. If something fails, that should be visible too. Trust is not just about privacy. It is also about clarity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Features in V1
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart Search:&lt;/strong&gt; Search across metadata and indexed file content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full-Text Indexing:&lt;/strong&gt; Powered by SQLite FTS5 with ranked results and snippets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR Support:&lt;/strong&gt; For image files and scanned PDFs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incremental Indexing:&lt;/strong&gt; Includes status, queue, rebuild controls, and health visibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval Evidence:&lt;/strong&gt; See match reasons, snippets, source paths, and file context in your results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collections:&lt;/strong&gt; Hierarchy-based organization with filtering and smart rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity Scan:&lt;/strong&gt; Re-link flow for moved or missing files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reader Mode:&lt;/strong&gt; In-app preview and annotation workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Annotation System:&lt;/strong&gt; For text, PDF/image regions, and media timelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Retrieval Analytics:&lt;/strong&gt; Track recent searches, recently opened files, and usefulness signals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video Player:&lt;/strong&gt; Equipped with dedicated annotation features.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🚀 &lt;strong&gt;We are launching a beta-testing registration soon.&lt;/strong&gt; If you are interested in early access, please fill out the &lt;strong&gt;[FORM PLACEHOLDER]&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Supported File Types (Current V1 Surface)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text and Code:&lt;/strong&gt; &lt;code&gt;txt&lt;/code&gt;, &lt;code&gt;md&lt;/code&gt;, &lt;code&gt;markdown&lt;/code&gt;, &lt;code&gt;csv&lt;/code&gt;, &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;xml&lt;/code&gt;, &lt;code&gt;yaml&lt;/code&gt;, &lt;code&gt;yml&lt;/code&gt;, &lt;code&gt;qml&lt;/code&gt;, &lt;code&gt;cpp&lt;/code&gt;, &lt;code&gt;cc&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;, &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;hpp&lt;/code&gt;, &lt;code&gt;js&lt;/code&gt;, &lt;code&gt;ts&lt;/code&gt;, &lt;code&gt;py&lt;/code&gt;, &lt;code&gt;java&lt;/code&gt;, &lt;code&gt;go&lt;/code&gt;, &lt;code&gt;rs&lt;/code&gt;, &lt;code&gt;ini&lt;/code&gt;, &lt;code&gt;cfg&lt;/code&gt;, &lt;code&gt;conf&lt;/code&gt;, &lt;code&gt;log&lt;/code&gt;, &lt;code&gt;sql&lt;/code&gt;, &lt;code&gt;ellanote&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDFs:&lt;/strong&gt; Native text extraction, with OCR fallback for scanned content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images:&lt;/strong&gt; OCR-based indexing when MIME is an image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video:&lt;/strong&gt; &lt;code&gt;mp4&lt;/code&gt;, &lt;code&gt;mkv&lt;/code&gt;, &lt;code&gt;mov&lt;/code&gt;, &lt;code&gt;avi&lt;/code&gt;, &lt;code&gt;wmv&lt;/code&gt;, &lt;code&gt;webm&lt;/code&gt;, &lt;code&gt;m4v&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio:&lt;/strong&gt; &lt;code&gt;mp3&lt;/code&gt;, &lt;code&gt;wav&lt;/code&gt;, &lt;code&gt;m4a&lt;/code&gt;, &lt;code&gt;aac&lt;/code&gt;, &lt;code&gt;flac&lt;/code&gt;, &lt;code&gt;ogg&lt;/code&gt;, &lt;code&gt;opus&lt;/code&gt;, &lt;code&gt;wma&lt;/code&gt; (speech-to-text indexing pipeline).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Presentations:&lt;/strong&gt; &lt;code&gt;ppt&lt;/code&gt;, &lt;code&gt;pptx&lt;/code&gt;, &lt;code&gt;odp&lt;/code&gt; (via conversion-to-PDF pipeline for preview/search reuse).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Annotation and Reader Experience
&lt;/h2&gt;

&lt;p&gt;ELLA V1 supports multiple annotation modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;text-highlight&lt;/code&gt;:&lt;/strong&gt; For text-range notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;area-highlight&lt;/code&gt; / &lt;code&gt;rect-note&lt;/code&gt;:&lt;/strong&gt; For document and visual regions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pin-note&lt;/code&gt;:&lt;/strong&gt; For anchored visual comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;time-note&lt;/code&gt; and &lt;code&gt;time-range&lt;/code&gt;:&lt;/strong&gt; For video/audio timestamps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means students can highlight learning material, and professionals can annotate documents and media references in one consistent, seamless flow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cloud Mirror (Local Source of Truth)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Drive:&lt;/strong&gt; Connection is available in-app with browser OAuth flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync Engine:&lt;/strong&gt; Local changes are mirrored through a queued sync engine with retries/backoff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifest Sync:&lt;/strong&gt; Catalog and annotation manifests are synced alongside linked file structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OneDrive:&lt;/strong&gt; Backend plumbing exists, but the UI is intentionally hidden for this V1 phase.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What We Improved Through This Build Journey
&lt;/h2&gt;

&lt;p&gt;Across sessions, ELLA evolved from an early functional UI into a cleaner, more professional product surface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removed non-V1 distractions (planner/notebook-first flow) from active UX.&lt;/li&gt;
&lt;li&gt;Unified visual language across Home, Browser, and Reader pages.&lt;/li&gt;
&lt;li&gt;Reworked side panel/navigation hierarchy and action ergonomics.&lt;/li&gt;
&lt;li&gt;Fixed major runtime blockers (Qt multimedia/runtime issues, dependency discovery).&lt;/li&gt;
&lt;li&gt;Added clearer operational status chips and readiness indicators.&lt;/li&gt;
&lt;li&gt;Hardened packaging approach for bundled tooling and reduced setup friction.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  V1 Positioning
&lt;/h2&gt;

&lt;p&gt;ELLA V1 is not trying to be a generic “everything app.” It is focused on one strong promise:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recover exact knowledge from your existing archive quickly, with proof, context, and control.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🚀 &lt;strong&gt;We are launching a beta-testing registration soon.&lt;/strong&gt; If you are interested in early access, please fill out the &lt;a href="https://forms.gle/nF4RdgF6wvhL5QvE9" rel="noopener noreferrer"&gt;FORM&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>vibecoding</category>
      <category>codex</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Basic Anime Recommendation Engine C++</title>
      <dc:creator>Soroush Javed Sulehri</dc:creator>
      <pubDate>Sun, 07 Aug 2022 14:35:09 +0000</pubDate>
      <link>https://dev.to/saroushjaved/basic-anime-recommendation-engine-c-3k0e</link>
      <guid>https://dev.to/saroushjaved/basic-anime-recommendation-engine-c-3k0e</guid>
      <description>&lt;p&gt;I have been developing in python for the last few years. C++ was something that I highly doubt I would ever need to learn but well lucks plays out in mysterious ways. Being in the final year of Electrical Engineering options of course I opted for a final year project in computer science because why make your life easier. &lt;/p&gt;

&lt;p&gt;Coming to the point here is the first ever project that I implemented using C++. &lt;/p&gt;

&lt;p&gt;This is an anime recommendation engine at its most basic form using almost all the basic elements the C++ has to offer. &lt;/p&gt;

&lt;p&gt;It can act as a very good beginner project which can be used by you to build something on for your own course. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem Statement&lt;/strong&gt;: Build a recommendation engine that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Asks the user to register &lt;/li&gt;
&lt;li&gt;Verifies the user by asking it to login &lt;/li&gt;
&lt;li&gt;Asks the user to answer two questions &lt;/li&gt;
&lt;li&gt;Recommends anime based on the answers &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Project can be extended to much more complex recommendations by simple adding more questions.&lt;/p&gt;

&lt;p&gt;Lets dive into the code. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CODE&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;iomanip&amp;gt;

using namespace std;


int main(void){

    string name = "temp";
    string password = "temp";
    string login_name = "temp_1";
    string login_password = "temp_2";
    int input;
    string genre_in;
    bool air_in;
    int counter = 0;
    string output_name[2];
    int output_score[2];
    bool flag = false;

     struct {
        string name;
        string genre;
        int score;
        bool air;
    } anime[4][4];


    struct {
        string name;
        string genre;
        int score;
        bool air;
    } database[4][4];

    // name
    database[0]-&amp;gt;name = "aot";
    database[1]-&amp;gt;name = "death note";
    database[2]-&amp;gt;name = "hero academia";
    database[3]-&amp;gt;name = "haikyu";
    database[4]-&amp;gt;name = "beyblade";
    // genre
    database[0]-&amp;gt;genre = "action";
    database[1]-&amp;gt;genre = "thrill";
    database[2]-&amp;gt;genre = "action";
    database[3]-&amp;gt;genre = "thrill";
    database[4]-&amp;gt;genre = "action";
    // score 
    database[0]-&amp;gt;score = 10;
    database[1]-&amp;gt;score = 8;
    database[2]-&amp;gt;score = 10;
    database[3]-&amp;gt;score = 7;
    database[4]-&amp;gt;score = 5;
    //air 
    database[0]-&amp;gt;air = true;
    database[1]-&amp;gt;air = false;
    database[2]-&amp;gt;air = true;
    database[3]-&amp;gt;air = true;
    database[5]-&amp;gt;air = false;







    cout &amp;lt;&amp;lt; "Welcome to anime recommednation engine !" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "Please register below to continue !" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; endl;
    cout&amp;lt;&amp;lt;"Enter a user name: "&amp;lt;&amp;lt;flush;
    cin &amp;gt;&amp;gt; name;
    cout&amp;lt;&amp;lt; "Enter a password "&amp;lt;&amp;lt;flush;
    cin&amp;gt;&amp;gt;password;

    cout &amp;lt;&amp;lt; " Thank you for registering !" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "Now you have to login !" &amp;lt;&amp;lt;endl;

    do{
        cout&amp;lt;&amp;lt;"username: "&amp;lt;&amp;lt; flush;
        cin&amp;gt;&amp;gt;login_name;
        cout&amp;lt;&amp;lt;"password: "&amp;lt;&amp;lt; flush;
        cin&amp;gt;&amp;gt;login_password;

        if((password==login_password) &amp;amp;&amp;amp; (name==login_name)){
            cout&amp;lt;&amp;lt;"thank you logging in"&amp;lt;&amp;lt;endl;
            break;
        }
        else {
            cout&amp;lt;&amp;lt;"Please try again with correct information"&amp;lt;&amp;lt;endl;
        }
    } while (password!=login_password);





    cout&amp;lt;&amp;lt;"Welcome to the recommendtion engine!"&amp;lt;&amp;lt;endl;
    cout&amp;lt;&amp;lt;"what genre of anime you like ?" &amp;lt;&amp;lt;endl;
    cout&amp;lt;&amp;lt;"1- Action 2- Thrill (Enter 1 or 2): "&amp;lt;&amp;lt;endl;
    cin&amp;gt;&amp;gt;input;

    if (input == 1){
            genre_in = "action";

        }
    else if(input == 2){
            genre_in = "thrill";
        }

    cout&amp;lt;&amp;lt;"Do you want it to be on air ?" &amp;lt;&amp;lt;endl;
    cout&amp;lt;&amp;lt;"1- Yes 2- No (Enter 1 or 2): "&amp;lt;&amp;lt;endl;
    cin &amp;gt;&amp;gt; input;
    if (input == 1){
            air_in = true;


        }
    else if (input == 2){
            air_in = false;

        }


     for(int i = 0; i &amp;lt; 4 ; i++){
        if(database[i]-&amp;gt;genre==genre_in){
            if(database[i]-&amp;gt;air==air_in){
                output_name[counter] = database[i]-&amp;gt;name;
                output_score[counter] = database[i]-&amp;gt;score;
                counter++;
            }
        }
    }


    for(int j = 0; j &amp;lt; 2 ;j++){
        cout&amp;lt;&amp;lt;"Recommendation " &amp;lt;&amp;lt; j &amp;lt;&amp;lt; ": "&amp;lt;&amp;lt; output_name[j] &amp;lt;&amp;lt; " Score: " &amp;lt;&amp;lt; output_score[j]&amp;lt;&amp;lt;endl;
    }



    return 0;
}
&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;


The code is self explanatory and I am hoping comments are not needed to understand it. In case of any questions feel free to ask.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>cpp</category>
      <category>struct</category>
    </item>
  </channel>
</rss>
