<?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: Cije-Sanchez</title>
    <description>The latest articles on Forem by Cije-Sanchez (@cijesanchez).</description>
    <link>https://forem.com/cijesanchez</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%2F2631742%2Faf530065-6c6c-486c-b521-737791ea8e81.png</url>
      <title>Forem: Cije-Sanchez</title>
      <link>https://forem.com/cijesanchez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cijesanchez"/>
    <language>en</language>
    <item>
      <title>How to Build Lasting Change</title>
      <dc:creator>Cije-Sanchez</dc:creator>
      <pubDate>Sun, 19 Jan 2025 20:08:17 +0000</pubDate>
      <link>https://forem.com/cijesanchez/how-to-build-lasting-change-176</link>
      <guid>https://forem.com/cijesanchez/how-to-build-lasting-change-176</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github"&gt;GitHub Copilot Challenge &lt;/a&gt;: Transitions and Transformations&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"How to Build Lasting Change"&lt;/strong&gt; is an interactive Three.js visualizer inspired by the widely popular Kurzgesagt video, &lt;a href="https://www.youtube.com/watch?v=75d_29QWELk" rel="noopener noreferrer"&gt;&lt;em&gt;"Change Your Life – One Tiny Step at a Time"&lt;/em&gt;&lt;/a&gt; on YouTube. The video delves into the science behind habits, explaining how routines form and how small, consistent changes can lead to lasting personal growth. It offers practical tips for creating and sustaining new habits while addressing the challenges of change.&lt;/p&gt;

&lt;p&gt;The visualizer complements the video’s audio by showcasing a mesmerizing morphing sphere that evolves in real-time as the narration progresses.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why I Built It&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The purpose of this visualizer is to create a more immersive experience by combining visual and auditory stimuli. Visual elements add an additional layer of engagement, helping to maintain focus and reducing the chances of the mind wandering.&lt;/p&gt;

&lt;p&gt;I aim to mirror Kurzgesagt’s mission of empowering individuals to understand and embrace the psychology of habit formation. This project aspires to motivate users to take small, actionable steps toward sustainable self-improvement while demystifying the process of change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Check out the &lt;strong&gt;How to Build Lasting Change&lt;/strong&gt; demo &lt;a href="https://how-to-change.onrender.com" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This current deployment plays the Kurzgesagt video, but you can easily modify it to integrate your own content by following the provided guide in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Cije-Sanchez" rel="noopener noreferrer"&gt;
        Cije-Sanchez
      &lt;/a&gt; / &lt;a href="https://github.com/Cije-Sanchez/how-to-change" rel="noopener noreferrer"&gt;
        how-to-change
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;strong&gt;"How to Build Lasting Change"&lt;/strong&gt; is a dynamic Three.js visualizer inspired by the highly acclaimed Kurzgesagt video, &lt;a href="https://www.youtube.com/watch?v=75d_29QWELk" rel="nofollow noopener noreferrer"&gt;&lt;em&gt;"Change Your Life – One Tiny Step at a Time"&lt;/em&gt;&lt;/a&gt; on YouTube.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repository to your local machine.&lt;/li&gt;
&lt;li&gt;Open the project folder in Visual Studio Code.&lt;/li&gt;
&lt;li&gt;Launch the terminal and run: &lt;code&gt;npm install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Start the app by executing: &lt;code&gt;npx parcel ./src/index.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ctrl + click the server link (e.g., "&lt;a href="http://localhost:1234" rel="nofollow noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt;") to view the app in your browser.&lt;/li&gt;
&lt;li&gt;Enjoy exploring and experimenting!&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Cije-Sanchez/how-to-change" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  Copilot Experience
&lt;/h2&gt;

&lt;p&gt;GitHub’s AI tools were instrumental in developing this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autocomplete:&lt;/strong&gt; Assisted with Three.js syntax for creating and animating the sphere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copilot Chat:&lt;/strong&gt; Helped brainstorm creative approaches to morph the sphere in meaningful and visually appealing ways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inline Chat:&lt;/strong&gt; Generated much of the markup, styling, and Three.js code, streamlining the development process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&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%2Fp7p1dahf18w500etmmu8.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%2Fp7p1dahf18w500etmmu8.png" alt="Image description" width="800" height="391"&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%2Felphpvsuhmcmjfd44hs0.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%2Felphpvsuhmcmjfd44hs0.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;By leveraging GitHub’s AI tools, I was able to fast-track development and focus on the core concept. My visualizer aims to motivate users to take actionable steps towards self-improvement 😊.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Gigs AI: A Conversational Chatbot Powered by Aggregated Data from Freelancer and Upwork</title>
      <dc:creator>Cije-Sanchez</dc:creator>
      <pubDate>Mon, 30 Dec 2024 06:01:40 +0000</pubDate>
      <link>https://forem.com/cijesanchez/gigs-ai-a-conversational-chatbot-powered-by-aggregated-data-from-freelancer-and-upwork-1ilg</link>
      <guid>https://forem.com/cijesanchez/gigs-ai-a-conversational-chatbot-powered-by-aggregated-data-from-freelancer-and-upwork-1ilg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata"&gt;Bright Data Web Scraping Challenge&lt;/a&gt;: Most Creative Use of Web Data for AI Models&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gigs AI&lt;/strong&gt; is an innovative tool designed to aggregate software freelance job listings from popular platforms like Freelancer.com and Upwork. By leveraging Bright Data's scraping capabilities, Gigs AI collects, structures, and presents relevant job opportunities in real time, fine-tuning AI-powered recommendations for freelancers looking to streamline their job search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Project&lt;/strong&gt;: &lt;a href="https://gigs-ai.vercel.app/" rel="noopener noreferrer"&gt;Gigs AI Demo Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code&lt;/strong&gt;: &lt;a href="https://github.com/Cije-Sanchez/gigs-ai" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are a few screenshots of the application in action:&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%2Fmxqi17qta7tlxjh3yunz.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%2Fmxqi17qta7tlxjh3yunz.png" alt="Image description" width="800" height="450"&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%2F7o1iqf418ye4yl4yh4eb.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%2F7o1iqf418ye4yl4yh4eb.png" alt="Image description" width="800" height="450"&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%2F8ibnqtrzuhgkai3tdbq6.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%2F8ibnqtrzuhgkai3tdbq6.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Bright Data
&lt;/h2&gt;

&lt;p&gt;Bright Data’s &lt;strong&gt;Scraping Browser&lt;/strong&gt; is central to Gigs AI’s ability to fetch up-to-date software freelance job postings. The scraping process runs every 24 hours, collecting data points such as job titles, descriptions, sources, experience levels, and compensation.&lt;/p&gt;

&lt;p&gt;The collected data is stored in a &lt;strong&gt;Postgres vector database&lt;/strong&gt; with embeddings generated using OpenAI’s &lt;code&gt;text-embedding-small&lt;/code&gt;. This allows freelancers to search and filter job postings efficiently based on relevance and preferences.&lt;/p&gt;

&lt;p&gt;The code for scraping Upwork is located at &lt;a href="https://github.com/Cije-Sanchez/gigs-ai/blob/master/backend/app/scrapers/upwork.ts" rel="noopener noreferrer"&gt;Upwork Scraper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code for scraping Freelancer is located at &lt;a href="https://github.com/Cije-Sanchez/gigs-ai/blob/master/backend/app/scrapers/freelancer.ts" rel="noopener noreferrer"&gt;Freelancer Scraper&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Data Indexing
&lt;/h4&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%2Fww6acazvl47ozlhjth3n.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%2Fww6acazvl47ozlhjth3n.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Data Retrieval
&lt;/h4&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%2Fa18xjsozfgogvmly1uzm.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%2Fa18xjsozfgogvmly1uzm.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Job Insights Generation&lt;/strong&gt;: The application uses OpenAI’s &lt;code&gt;gpt-4o-mini&lt;/code&gt; to generate insights about the job based on the posting details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Schema&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model Job {
  id Int @id @default(autoincrement())
  title String
  description String
  source String
  location String
  link String
  timePosted String
  experienceLevel String
  compensation String
  type String
  jobId String
  Job_embedding_store Job_embedding_store[]
  public_Job_embedding_v2_store public_Job_embedding_v2_store[]
  public_Job_embedding_v3_store public_Job_embedding_v3_store[]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tools Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React + Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Express + Prisma&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: Postgres with PgVector for efficient vector search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bright Data&lt;/strong&gt;: Web Scraper API &amp;amp; Scraping Browser for automated job data collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Models&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;OpenAI’s &lt;code&gt;text-embedding-small&lt;/code&gt; for embedding&lt;/li&gt;
&lt;li&gt;OpenAI’s &lt;code&gt;gpt-4o-mini&lt;/code&gt; for text generation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Hosting&lt;/strong&gt;: Amazon EC2 Instance&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Daily Job Updates&lt;/strong&gt;: Fetches the latest software freelance jobs from upwork and freelancer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Search&lt;/strong&gt;: Vectorized search allows freelancers to find relevant jobs quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job Insights&lt;/strong&gt;: AI-powered summaries help users assess job suitability.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Future Plans
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-platform Aggregation&lt;/strong&gt;: Expand job collection to more freelancing sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Performance&lt;/strong&gt;: Optimize Postgres vector queries for faster search results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced User Interface&lt;/strong&gt;: Add support for saved searches and previous job views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Recommendations&lt;/strong&gt;: Refine AI suggestions based on user interaction and preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building Gigs AI was an exciting journey into the intersection of web scraping, AI, and freelancing. Bright Data’s tools made it effortless to collect structured web data, while Postgres and OpenAI models provided the backbone for intelligent job matching.&lt;/p&gt;

&lt;p&gt;With future improvements, Gigs AI aims to become the ultimate assistant for freelancers seeking software gigs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you for reviewing my submission!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>brightdatachallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
