{"id":12202,"date":"2025-01-05T01:03:16","date_gmt":"2025-01-05T00:03:16","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=12202"},"modified":"2025-01-05T01:03:18","modified_gmt":"2025-01-05T00:03:18","slug":"how-i-automated-my-job-application-process-part-1","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2025\/01\/05\/how-i-automated-my-job-application-process-part-1\/","title":{"rendered":"How I Automated My Job Application Process. (Part 1)"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>A developer automated job applications, sending 250 in 20 minutes using Python scripts and GPT<\/p>\n<\/blockquote>\n\n\n\n<p>Source: <em><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1\">How I Automated My Job Application Process. (Part 1)<\/a><\/em><\/p>\n\n\n\n<!--more-->\n\n\n\n<!--nextpage-->\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h1 class=\"wp-block-heading\">How I Automated My Job Application Process. (Part 1)<\/h1>\n\n\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdn.hashnode.com\/res\/hashnode\/image\/upload\/v1703431513139\/VMC2v8SZK.jpg?w=910&#038;ssl=1\" alt=\"David Dodda's photo\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/hashnode.com\/@daviddodda\"><\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/hashnode.com\/@daviddodda\">David Dodda<\/a><\/p>\n\n\n\n<p>\u00b7<a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1\"><time datetime=\"2024-12-27T13:22:04.121Z\">Dec 27, 2024<\/time><\/a>\u00b7<\/p>\n\n\n\n<p>7 min read<\/p>\n\n\n\n<p>Look, I&#8217;ll be honest &#8211; job hunting sucks.<\/p>\n\n\n\n<p>It&#8217;s this soul-crushing cycle of copying and pasting the same information over and over again, tweaking your resume for the 100th time, and writing cover letters that make you sound desperate without actually sounding desperate.<\/p>\n\n\n\n<p>But here&#8217;s the thing: repetitive tasks + structured process = perfect automation candidate.<\/p>\n\n\n\n<p>So I did what any sane developer would do &#8211; I built a system to automate the whole damn thing. By the end, I had sent out 250 job applications in 20 minutes. (The irony? I got a job offer before I even finished building it. More on that later.)<\/p>\n\n\n\n<p>Let me walk you through how I did it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-the-job-application-process-is-broken\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-the-job-application-process-is-broken\"><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-the-job-application-process-is-broken\">The Job Application Process is Broken<\/h2>\n\n\n\n<p>Think about it &#8211; every job application follows the same basic pattern:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Find job posting<\/li>\n\n\n\n<li>Check if you&#8217;re qualified<\/li>\n\n\n\n<li>Research company (let&#8217;s be real, most people skip this)<\/li>\n\n\n\n<li>Submit resume + cover letter<\/li>\n\n\n\n<li>Wait&#8230; and wait&#8230; and wait&#8230;<\/li>\n<\/ol>\n\n\n\n<p>It&#8217;s like a really boring video game where you do the same quest over and over, hoping for different results.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-building-the-proof-of-concept\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-building-the-proof-of-concept\"><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-building-the-proof-of-concept\">Building the Proof of Concept<\/h2>\n\n\n\n<p>I started by writing some quick Python scripts to test if this crazy idea could work. Here&#8217;s how I broke it down:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-1-getting-the-job-listings-the-manual-part\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-1-getting-the-job-listings-the-manual-part\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-1-getting-the-job-listings-the-manual-part\">Step 1: Getting the Job Listings (The Manual Part)<\/h3>\n\n\n\n<p>First challenge: getting job listings at scale. I tried web scraping but quickly realized something: job boards are like snowflakes &#8211; each one is uniquely annoying to scrape.<\/p>\n\n\n\n<p>I tested dumping entire web pages into an LLM to clean the data, but:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It was expensive as hell<\/li>\n\n\n\n<li>I didn&#8217;t want the AI hallucinating job requirements (imagine explaining that in an interview)<\/li>\n<\/ul>\n\n\n\n<p>So I went old school &#8211; manual HTML copying. Yes, it&#8217;s primitive. Yes, it works. Sometimes the simplest solution is the best solution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-2-cleaning-the-raw-html\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-2-cleaning-the-raw-html\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-2-cleaning-the-raw-html\">Step 2: Cleaning the Raw HTML<\/h3>\n\n\n\n<p>The raw HTML was a mess, but I needed structured data like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">{\n    &quot;job_link&quot;: &quot;https:\/\/example.com\/job\/12345&quot;,\n    &quot;job_id&quot;: &quot;12345&quot;,\n    &quot;job_role&quot;: &quot;software developer&quot;,\n    &quot;employer&quot;: &quot;Tech Corp Inc&quot;,\n    &quot;location&quot;: &quot;San Francisco, CA&quot;,\n    &quot;work_arrangement&quot;: &quot;Remote&quot;,\n    &quot;salary&quot;: &quot;$150,000&quot;\n}\n<\/code><\/pre>\n\n\n\n<p>Pro tip: You can just show ChatGPT a sample of your HTML and the output format you want, and it&#8217;ll write the parsing script for you. Work smarter, not harder.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-3-getting-the-full-job-details\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-3-getting-the-full-job-details\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-3-getting-the-full-job-details\">Step 3: Getting the Full Job Details<\/h3>\n\n\n\n<p>This part was straightforward but required some finesse. For each job listing, I made a GET request to fetch the full description. Each request returns raw HTML that still has all the website scaffolding &#8211; navigation bars, popups, footer junk, the works.<\/p>\n\n\n\n<p>I wrote a simple HTML parser to strip out everything except the actual job description. Sometimes you&#8217;ll hit extra hurdles &#8211; like having to click a button to reveal the recruiter&#8217;s email or company details. The good news? Since you&#8217;re working with one job board at a time, you only need to figure out these patterns once.<\/p>\n\n\n\n<p>Pro tip: Always add delays between requests. I set mine to 2-3 seconds. Sure, it makes the process slower, but it&#8217;s better than getting your IP banned. Don&#8217;t be that person who DDOSes job boards &#8211; I added delays between requests because I&#8217;m not a monster.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-4-converting-raw-html-to-structured-data\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-4-converting-raw-html-to-structured-data\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-4-converting-raw-html-to-structured-data\">Step 4: Converting Raw HTML to Structured Data<\/h3>\n\n\n\n<p>This is where it gets interesting. Job postings are like people &#8211; they all have the same basic parts but the organization is chaos. Some list skills at the top, others bury them in paragraphs of corporate speak.<\/p>\n\n\n\n<p>Enter the LLM prompt that saved my sanity:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">const prompt = `Please analyze these HTML contents from a job posting and extract information into a structured JSON format.\n\n&#091;... HTML content ...]\n\nFormat the response as valid JSON object with these exact keys:\n- contact_email\n- application_instructions\n- job_posting_text (in markdown)\n- job_posting_link\n- additional_info (salary, location, etc.)\n- job_title\n- job_company\n- job_department\n- job_location\n- job_skills\n- job_instructions (how to apply)\n\noptional keys\n\n- hiring_manager_name\n- \n- job_portal\n`\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-5-generating-cover-letters-that-dont-suck\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-5-generating-cover-letters-that-dont-suck\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-5-generating-cover-letters-that-dont-suck\">Step 5: Generating Cover Letters That Don&#8217;t Suck<\/h3>\n\n\n\n<p>The secret to good cover letters? Context. I fed my resume into the LLM along with the job details. This way, the AI could match my experience with their requirements. Suddenly, those &#8220;I&#8217;m excited about this opportunity&#8221; letters actually had substance.<\/p>\n\n\n\n<p>Here&#8217;s the prompt that made it happen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">const prompt = `Please help me write a professional job application email based on the following information:\n\n=== MY RESUME ===\n${resumeMarkdown}\n\n=== JOB DETAILS ===\nJob Title: ${job_title}\nCompany: ${job_company}\nDepartment: ${job_department || &#039;&#039;}\nLocation: ${job_location || &#039;&#039;}\nJob Description: ${job_posting_text }\nRequired Skills: ${job_skills?.join(&#039;, &#039;) || &#039;&#039;}\nApplication Instructions: ${job_instructions || &#039;&#039;}\n\nAdditional Context:\n- Hiring Manager Name: ${hiring_manager_name || &#039;&#039;}\n- Referral Source: ${referral_source || &#039;Job board&#039;}\n- Application Portal: ${job_portal || &#039;&#039;}\n\nInstructions:\n1. Create an email that is ready to send without any placeholders or edits needed\n2. If any critical information is missing (like company name or job title), respond with an error message instead of generating incomplete content\n3. Skip any optional fields if they&#039;re empty rather than including placeholder text\n4. Use natural sentence structure instead of obvious template language\n5. Include specific details from both the resume and job description to show genuine interest and fit\n6. Any links or contact information should be properly formatted and ready to use\n\nFormat the response as a JSON object with these keys:\n{\n  &quot;status&quot;: &quot;success&quot; or &quot;error&quot;,\n  &quot;error_message&quot;: &quot;Only present if status is error, explaining what critical information is missing&quot;,\n  &quot;email&quot;: {\n    &quot;subject&quot;: &quot;The email subject line&quot;,\n    &quot;body_html&quot;: &quot;The email body in HTML format with proper formatting&quot;,\n    &quot;body_text&quot;: &quot;The plain text version of the email&quot;,\n    &quot;metadata&quot;: {\n      &quot;key_points_addressed&quot;: &#091;&quot;list of main points addressed&quot;],\n      &quot;skills_highlighted&quot;: &#091;&quot;list of skills mentioned&quot;],\n      &quot;resume_matches&quot;: &#091;&quot;specific experiences\/skills from resume that match job requirements&quot;],\n      &quot;missing_recommended_info&quot;: &#091;&quot;optional fields that were missing but would strengthen the application if available&quot;],\n      &quot;tone_analysis&quot;: &quot;brief analysis of the email&#039;s tone&quot;\n    }\n  }\n}\n\nCritical required fields (will return error if missing):\n- Job title\n- Company name\n- Job description\n- Resume content\n\nRecommended but optional fields:\n- Hiring manager name\n- Department\n- Location\n- Application instructions\n- Referral source\n- Required skills list\n\nPlease ensure all HTML in body_html is properly escaped for JSON and uses only basic formatting tags (p, br, b, i, ul, li) to ensure maximum email client compatibility.\n`\n<\/code><\/pre>\n\n\n\n<p>The prompt does a few clever things:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Forces structured output &#8211; no wishy-washy responses<\/li>\n\n\n\n<li>Tracks which of your skills match the job requirements<\/li>\n\n\n\n<li>Identifies any missing info that could strengthen the application<\/li>\n\n\n\n<li>Generates both HTML and plain text versions (because some job portals hate formatting)<\/li>\n<\/ol>\n\n\n\n<p>And here&#8217;s the kicker &#8211; it fails fast if critical info is missing. No more generic &#8220;I saw your job posting&#8221; emails. Either the cover letter has substance, or it doesn&#8217;t get sent. Period.<\/p>\n\n\n\n<p>(I start all all my prompts with \u2018please\u2019, so that when AI eventually takes over, they would consider me friendly \ud83d\ude01)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-6-sending-the-emails-the-moment-of-truth\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-step-6-sending-the-emails-the-moment-of-truth\"><\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-step-6-sending-the-emails-the-moment-of-truth\">Step 6: Sending the Emails (The Moment of Truth)<\/h3>\n\n\n\n<p>Last step &#8211; actually sending these beautifully crafted applications. Sounds simple, right? Just hook up an email service and blast away?<\/p>\n\n\n\n<p>Not so fast. I needed a way to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Send professional-looking emails<\/li>\n\n\n\n<li>Track what was actually sent<\/li>\n\n\n\n<li>Monitor responses (can&#8217;t ghost the recruiters)<\/li>\n\n\n\n<li>Not get flagged as spam (crucial!)<\/li>\n<\/ul>\n\n\n\n<p>For testing, I sent all emails to a test account first. Pro tip: when you do send to actual recruiters, BCC yourself. Nothing worse than wondering &#8220;did that email actually go through?&#8221;<\/p>\n\n\n\n<p>At this stage of the POC, I just used a simple email provider like Mailgun. Quick, dirty, but effective. Don&#8217;t worry &#8211; in Part 2, I&#8217;ll tell you about the rabbit hole I went down trying to build a full email management system. (Spoiler: it involves rejected AWS applications and a failed attempt at running my own email server. Good times.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-the-results\"><a href=\"https:\/\/blog.daviddodda.com\/how-i-automated-my-job-application-process-part-1#heading-the-results\"><\/a><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-the-results\">The Results<\/h2>\n\n\n\n<p>The proof of concept worked better than expected. I could take a job board, extract listings, parse them, and generate personalized applications &#8211; all with a few Python scripts.<\/p>\n\n\n\n<p>But this was just the beginning. The real challenge? Turning these scripts into a proper application that could:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Handle multiple job boards<\/li>\n\n\n\n<li>Track applications<\/li>\n\n\n\n<li>Manage email responses<\/li>\n\n\n\n<li>Not get me blacklisted from every HR system in existence<\/li>\n<\/ul>\n\n\n\n<p>In Part 2, I&#8217;ll show you how I built the actual application, complete with all the technical decisions, trade-offs, and &#8220;what was I thinking&#8221; moments.<\/p>\n\n\n\n<p>Stay tuned &#8211; it gets even better.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><em>Want to know when Part 2 drops? Follow me on<\/em> <a target=\"_blank\" href=\"https:\/\/x.com\/DavidDodda_\" rel=\"noreferrer noopener\"><em>Twitter<\/em><\/a> <em>or<\/em> <a target=\"_blank\" href=\"https:\/\/www.linkedin.com\/in\/arundavidreddy\/\" rel=\"noreferrer noopener\"><em>LinkedIn<\/em><\/a><em>. And yes, I&#8217;ll eventually tell you how I got a job offer before finishing this project. It&#8217;s a good story.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">A developer automated job applications, sending 250 in 20 minutes using Python scripts and GPT Source: How I Automated My Job Application Process. (Part 1)<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2025\/01\/05\/how-i-automated-my-job-application-process-part-1\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-12202","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-3aO","jetpack-related-posts":[{"id":11626,"url":"https:\/\/monodes.com\/predaelli\/2024\/05\/05\/40-tools-for-ethical-hacking\/","url_meta":{"origin":12202,"position":0},"title":"40 tools for ethical hacking","author":"Paolo Redaelli","date":"2024-05-05","format":false,"excerpt":"I know many of them, but not everyone! Shame on me! Here are 40 tools for ethical hacking! Nmap: Network scanner used for network discovery and security auditing. Wireshark: Network protocol analyzer for packet inspection and troubleshooting. Metasploit: Penetration testing framework for exploiting vulnerabilities. John the Ripper: Password cracking tool\u2026","rel":"","context":"In &quot;Tricks&quot;","block_context":{"text":"Tricks","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/tricks\/"},"img":{"alt_text":"\ud83d\udd0d","src":"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/tc1\/1\/16\/1f50d.png","width":350,"height":200},"classes":[]},{"id":8922,"url":"https:\/\/monodes.com\/predaelli\/2021\/11\/18\/an-introduction-to-the-pg_auto_failover-project\/","url_meta":{"origin":12202,"position":1},"title":"An introduction to the pg_auto_failover project","author":"Paolo Redaelli","date":"2021-11-18","format":"link","excerpt":"\u201cPostgres is awesome, makes developping my application so much easier, it solves so many problems for me!\u201d and the next step \u201cso, how do I run Postgres in Production?\u201d. If you\u2019re not sure how to bridge that gap yourself, how to deploy your first production system with automated failover, then\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":15509,"url":"https:\/\/monodes.com\/predaelli\/2026\/04\/19\/15509\/","url_meta":{"origin":12202,"position":2},"title":"Mozilla 'Thunderbolt' Is an Open-Source\u2026","author":"Paolo Redaelli","date":"2026-04-19","format":"link","excerpt":"Mozilla 'Thunderbolt' Is an Open-Source AI Client Focused On Control and Self-Hosting BrianFagioli writes: Mozilla's email subsidiary MZLA Technologies just introduced Thunderbolt, an open-source AI client aimed at organizations that want to run AI on their own infrastructure instead of relying entirely on cloud services. The idea is to give\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/monodes.com\/predaelli\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":730,"url":"https:\/\/monodes.com\/predaelli\/2015\/10\/15\/pvbrowser-hmi-and-scada-for-everyone\/","url_meta":{"origin":12202,"position":3},"title":"pvbrowser: HMI and Scada for everyone","author":"Paolo Redaelli","date":"2015-10-15","format":false,"excerpt":"See pvbrowser \u2013 The Process Visualization Browser. HMI and Scada for every platform.: there are free-as-in-freedom projects to handle industrial automation!","rel":"","context":"In &quot;GNU\/Linux&quot;","block_context":{"text":"GNU\/Linux","link":"https:\/\/monodes.com\/predaelli\/category\/gnulinux\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2015\/10\/05.jpg?fit=980%2C241&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2015\/10\/05.jpg?fit=980%2C241&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2015\/10\/05.jpg?fit=980%2C241&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2015\/10\/05.jpg?fit=980%2C241&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1518,"url":"https:\/\/monodes.com\/predaelli\/2016\/05\/11\/master-of-cracking\/","url_meta":{"origin":12202,"position":4},"title":"Master of cracking","author":"Paolo Redaelli","date":"2016-05-11","format":false,"excerpt":"It seems that I'm a master in breaking automated tests. Do you think I can count it as a proficiency? :) Liberty Eiffel automated tests (Bell branch) Last update: 2016-05-11 11:44:02 +0200 (CEST) git pull failed (1) cd \/Liberty && git fetch origin && git checkout bell && git merge\u2026","rel":"","context":"In &quot;Eiffel&quot;","block_context":{"text":"Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/"},"img":{"alt_text":"liberty-light","src":"https:\/\/i0.wp.com\/monodes.com\/predaelli\/wp-content\/uploads\/sites\/4\/2016\/05\/liberty-light-150x150-1.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":951,"url":"https:\/\/monodes.com\/predaelli\/2016\/01\/28\/plc-with-arduino\/","url_meta":{"origin":12202,"position":5},"title":"PLC with Arduino","author":"Paolo Redaelli","date":"2016-01-28","format":false,"excerpt":"They are sprouting like fungis: Arduino-based PLCs http:\/\/www.industrialshields.com\/\u00a0Barcelonaindustruino.com Belgiumbiemmeitalia.net Treviso","rel":"","context":"In &quot;Hardware&quot;","block_context":{"text":"Hardware","link":"https:\/\/monodes.com\/predaelli\/category\/hardware\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=12202"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12202\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=12202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=12202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=12202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}