[{"data":1,"prerenderedAt":703},["ShallowReactive",2],{"portfolio":3},{"homepage":4,"experience":188,"projects":361,"products":366,"cases":582,"experiencePage":698},{"person":5,"valueProposition":8,"credibilityLine":9,"primaryCtas":10,"profileLinks":14,"proofHeading":21,"proof":22,"featuredWorkHeading":35,"featuredWorkIntro":36,"featuredProjects":37,"projectsCta":66,"experiencePreview":69,"products":96,"navItems":144,"contact":156,"siteName":169,"seoTitle":170,"seoDescription":171,"pageCopy":172},{"name":6,"role":7},"Daniel Kazansky","Full-stack & AI Engineer","I build AI agents and full-stack products that connect to real business workflows.","Experience at Upwork, Subbly & Woki.one",[11],{"label":12,"href":13},"View experience","\u002Fexperience",[15,18],{"label":16,"href":17},"GitHub","https:\u002F\u002Fgithub.com\u002Fslnnzmtl",{"label":19,"href":20},"LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fdaniel-kazansky\u002F","Selected outcomes",[23,26,29,32],{"value":24,"label":25},"8+ years","years across digital products",{"value":27,"label":28},"20M+","marketplace users",{"value":30,"label":31},"10M+","analytics data points",{"value":33,"label":34},"25%","higher onboarding completion","Featured projects","Selected work in AI automation and product engineering.",[38,53],{"slug":39,"name":40,"shortDescription":41,"role":42,"track":43,"stackTags":44,"hasCaseStudy":50,"href":51,"hrefLabel":52},"ai-appointment-crm-automation","AI Appointment & CRM Automation","A Telegram assistant for booking and managing clinic appointments, connected to EspoCRM.\n\n","Independent full-stack AI engineer","independent",[45,46,47,48,49],"LangGraph","Telegram","EspoCRM","Docker","TypeScript",true,"\u002Fprojects\u002Fai-appointment-crm-automation","View case",{"slug":54,"name":55,"shortDescription":56,"role":57,"track":58,"stackTags":59,"hasCaseStudy":63,"href":64,"hrefLabel":65},"directus-website-builder","Directus Website Builder","Multilingual marketing sites needed block-based authoring, visual editing, and static generation without a custom CMS for every client.","Independent full-stack engineer","open_source",[60,61,49,62],"Directus","Nuxt","Vue 3",false,"https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Fdirectus-website-builder","View repository",{"label":67,"href":68},"View all projects","\u002Fprojects",{"heading":70,"items":71,"cta":94},"Recent roles",[72,79,87],{"id":73,"organization":74,"title":75,"dateRange":76,"summary":77,"icon":78,"iconAlt":74},"upwork-reputation-team","Upwork","Senior Software Engineer","Jan 2025 – May 2026","Built and modernized reputation, credentialing, and enforcement experiences across a marketplace serving tens of millions of users. Owned frontend domains end-to-end and supported production systems through on-call responsibilities.","\u002Fimages\u002Fexperience\u002Fupwork.png",{"id":80,"organization":81,"title":82,"dateRange":83,"summary":84,"icon":85,"iconAlt":86},"subbly-senior-software-developer","Subbly®","Senior Software Developer","Nov 2023 – Dec 2024","Subscription commerce product engineering spanning setup UX, AI-assisted onboarding, and checkout. Reduced merchant setup time by 20%, raised AI-assisted onboarding completion by 25% for 500+ users, and cut payment abandonment by 15%.","\u002Fimages\u002Fexperience\u002Fsubbly.png","Subbly",{"id":88,"organization":89,"title":90,"dateRange":91,"summary":92,"icon":93,"iconAlt":89},"woki-lead-software-developer","Woki.one","Lead Software Developer","Jun 2023 – Dec 2023","Led a four-person engineering team building a modular Vue 3 CRM with configurable UI under startup delivery pressure.","\u002Fimages\u002Fexperience\u002Fwoki.png",{"label":95,"href":13},"View full timeline",{"heading":97,"description":98,"items":99,"totalCount":140,"allProductsCta":141},"Products","Software I design, build, package, and maintain for real users.",[100,120],{"slug":101,"title":102,"lead":103,"supportingLine":104,"image":105,"cta":110,"tags":113,"detail_template":119},"rekordbox-playlist-converter","Simple Rekordbox Converter","Convert Rekordbox XML playlists and lossless tracks to WAV or AIFF without changing your original files.","Download the universal macOS app, or use the Python CLI on macOS, Windows, and Linux.",{"src":106,"srcThumb":106,"alt":107,"width":108,"height":109},"\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-main-window-600w.webp","Simple Rekordbox Converter main window with a Rekordbox XML loaded, a playlist selected, and WAV output settings",600,386,{"label":111,"href":112},"View product","\u002Fproducts\u002Frekordbox-playlist-converter",[114,115,116,117,118],"Python","Tkinter","FFmpeg","FFprobe","PyInstaller","Application",{"slug":121,"title":122,"lead":123,"supportingLine":124,"image":125,"cta":131,"tags":133,"detail_template":139},"soundcloud-ui-toolkit","SoundCloud UI Toolkit","Customize SoundCloud’s layout, queue, themes, and rounding.","A Chromium extension with no analytics, ads, or personal-data collection.",{"src":126,"srcThumb":127,"alt":128,"width":129,"height":130},"\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fafter-enlarged-layout.png","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fafter-enlarged-layout-640w.webp","SoundCloud with SoundCloud UI Toolkit enlarged layout and queue enabled",1280,800,{"label":111,"href":132},"\u002Fproducts\u002Fsoundcloud-ui-toolkit",[134,135,136,137,138],"Chrome—Extension","JavaScript","CSS","Chromium","SoundCloud","Chrome extension",2,{"label":142,"href":143},"View all products","\u002Fproducts",[145,148,150,152,153],{"label":146,"href":147},"Home","\u002F",{"label":149,"href":13},"Experience",{"label":151,"href":68},"Projects",{"label":97,"href":143},{"label":154,"href":155},"Contact","\u002F#contact",{"heading":157,"summary":158,"links":159},"Need an AI workflow connected to real operations?","I help teams build AI-native products, connect agents to real business workflows, and ship reliable full-stack systems. ",[160,164,167],{"label":161,"href":162,"title":163},"Email","mailto:kazanskydaniel@gmail.com","kazanskydaniel@gmail.com",{"label":46,"href":165,"title":166},"https:\u002F\u002Ft.me\u002Fslnnzmtl","slnnzmtl",{"label":19,"href":168,"title":19},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fdaniel-kazansky","Kazansky.dev","Daniel Kazansky | AI-Native Full-Stack Engineer","I build reliable AI-enabled products connecting models to APIs, CRMs, databases, and real operations—backed by 8+ years across digital products and software delivery.",{"projects_index":173,"products_index":178,"product_detail":181},{"title":151,"description":174,"seo_description":175,"back_label":176,"back_href":147,"item_cta":177},"Selected projects and case studies showing how I connect AI, APIs, and operational systems into reliable software.","Selected projects and case studies by Daniel Kazansky, an AI-Native Full-Stack Engineer.","Back to homepage","View project",{"title":97,"description":179,"seo_description":180,"back_label":176,"back_href":147,"item_cta":177,"spotlight_cta":111},"Public products and tools. Each card opens a dedicated landing page with usage notes and downloads.","Public products from Daniel Kazansky, including Simple Rekordbox Converter for Rekordbox 6 and 7.",{"kicker":182,"back_label":183,"back_href":143,"benefits_heading_with_stack":184,"benefits_heading_default":185,"trust_heading":186,"download_warning_title":187},"Product","Back to products","Feature highlights","Why use it","Product information","Before you open the app",[189,216,235,253,267,287,302,321,341],{"id":190,"organization":191,"title":192,"engagementType":43,"location":193,"workMode":194,"start":195,"end":196,"scope":197,"contributions":198,"outcomes":202,"technologies":206,"links":207},"independent-ai-fullstack","Independent","Full Stack AI Developer","Remote","remote","2024-01",null,"Independent full-stack work on AI-native systems: Telegram assistants, CRM-connected booking flows, and controlled tool use with explicit approval and persistence.",[199,200,201],"Built a multilingual LangGraph appointment bot for booking, rescheduling, and cancellation through Telegram with live CRM availability.","Implemented identity checks, approval-controlled writes, and persistence so consequential actions require explicit confirmation.","Packaged delivery with Docker and automated tests around tool-using agent workflows.",[203],{"text":204,"qualifier":205},"Controlled tool use, live CRM availability, identity-scoped operations, and explicit approval gates in an inspectable TypeScript implementation.","personal",[45,46,47,48,114,49],[208,211,214],{"label":209,"href":210},"LangGraph Appointment Bot on GitHub","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Flanggraph-appointment-bot",{"label":212,"href":213},"LangGraph Personal Assistant on GitHub","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Flanggraph-personal-assistant",{"label":215,"href":64},"Directus Website Builder on GitHub",{"id":73,"organization":74,"title":75,"engagementType":217,"location":193,"workMode":194,"start":218,"end":219,"scope":220,"contributions":221,"outcomes":226,"technologies":232,"icon":78,"iconAlt":74,"homepageSummary":77},"contractor","2025-01","2026-05","Embedded long-term contractor on the Reputation team, owning marketplace reputation and enforcement UI domains end-to-end with PagerDuty production responsibility.",[222,223,224,225],"Owned frontend delivery for Partner Certified Talent and Freelancer Aggregated Strengths across Profiles, Search, and Onboarding.","Contributed to the Job Success Dashboard migration to a new evaluation model.","Led Vue 2 to Vue 3 modernization of legacy reputation UI modules.","Designed an AI-assisted development workflow with Cursor, Claude Code, and MCP integrations for Figma, Linear, GitHub, and Confluence.",[227,230],{"text":228,"qualifier":229},"Primary frontend ownership on Partner Certified Talent work reaching a marketplace with millions of freelancers (platform scale, not personal headcount).","platform",{"text":231,"qualifier":205},"Held PagerDuty on-call responsibility for production reputation surfaces.",[62,61,49,233,234],"Cursor","MCP",{"id":80,"organization":81,"title":82,"engagementType":236,"location":193,"workMode":194,"start":237,"end":238,"scope":239,"contributions":240,"outcomes":245,"technologies":251,"icon":85,"iconAlt":86,"homepageSummary":84},"full-time","2023-11","2024-12","Subscription commerce product engineering spanning merchant setup UX, AI-assisted onboarding, checkout, and a flexible design system.",[241,242,243,244],"Refactored subscription setup UX to shorten merchant time-to-configure.","Developed an AI-powered onboarding chatbot for merchant activation flows.","Optimized cart and payment flows to reduce abandonment.","Built a custom design system for reusable storefront and admin UI.",[246,249],{"text":247,"qualifier":248},"20% faster merchant setup and 25% higher AI-assisted onboarding completion for 500+ merchants\u002Fusers.","team",{"text":250,"qualifier":248},"15% lower cart and payment abandonment.",[49,252],"Vue",{"id":88,"organization":89,"title":90,"engagementType":254,"location":193,"workMode":194,"start":255,"end":256,"scope":92,"contributions":257,"outcomes":261,"technologies":266,"icon":93,"iconAlt":89,"homepageSummary":92},"part-time","2023-06","2023-12",[258,259,260],"Led a 4-person team delivering a modular Vue 3 CRM architecture.","Engineered configurable UI features for customer-specific customization.","Drove frontend performance work to reach a 95+ Google PageSpeed score.",[262,264],{"text":263,"qualifier":248},"Delivered a modular Vue 3 CRM with configurable UI for the product.",{"text":265,"qualifier":205},"Reached a 95+ Google PageSpeed score on primary CRM surfaces.",[62,49],{"id":268,"organization":269,"title":270,"engagementType":236,"location":193,"workMode":194,"start":271,"end":272,"scope":273,"contributions":274,"outcomes":278,"technologies":281,"icon":285,"iconAlt":269,"homepageSummary":286},"capgemini-software-developer","Capgemini Engineering","Software Developer","2022-06","2023-05","Built React\u002FTypeScript\u002FRedux analytics interfaces for enterprise marketing and forecasting in a Lerna monorepo.",[275,276,277],"Developed interactive dashboards handling large analytics payloads over HTTP.","Worked in a Lerna monorepo with shared React\u002FTypeScript packages.","Supported marketing and forecasting workflows for enterprise clients.",[279],{"text":280,"qualifier":229},"Analytics interfaces handling 10M+ data points over HTTP (platform\u002Fsystem scale).",[282,49,283,284],"React","Redux","Lerna","\u002Fimages\u002Fexperience\u002Fcapgemini.png","Built interactive dashboards for a big data analytics system serving enterprise marketing and forecasting, managing 10M+ data points over HTTP in a React monorepo.",{"id":288,"organization":169,"title":289,"engagementType":290,"location":193,"workMode":194,"start":291,"end":292,"scope":293,"contributions":294,"outcomes":297,"technologies":300},"kazansky-dev-fullstack","Full Stack Developer","freelance","2022-02","2022-11","Freelance full-stack delivery with Vue and Vuex. Scope kept conservative: LinkedIn lists skills without a detailed public role description.",[295,296],"Delivered freelance full-stack features using Vue and Vuex.","Supported client web delivery as an independent contractor under Kazansky.dev.",[298],{"text":299,"qualifier":205},"Completed a multi-month freelance engagement delivering Vue\u002FVuex client work.",[252,301],"Vuex",{"id":303,"organization":304,"title":305,"engagementType":236,"location":193,"workMode":194,"start":306,"end":271,"scope":307,"contributions":308,"outcomes":312,"technologies":315},"malevich-frontend-developer","Malevich","Frontend Developer","2020-11","Frontend and mobile delivery for operational tooling, equipment scanning, and multilingual e-commerce on React, Next.js, GraphQL, and React Native\u002FExpo.",[309,310,311],"Built React\u002FGraphQL\u002FNext.js operational tooling used by hundreds of daily operators.","Delivered a React Native\u002FExpo panel for equipment scanning workflows.","Shipped a multilingual React\u002FRedux e-commerce platform with Node.js backend collaboration.",[313],{"text":314,"qualifier":229},"Operational tooling serving 500+ daily users (platform scale).",[282,316,317,318,319,283,320],"Next.js","GraphQL","React Native","Expo","Node.js",{"id":322,"organization":323,"title":324,"engagementType":236,"location":325,"workMode":326,"start":327,"end":328,"scope":329,"contributions":330,"outcomes":334,"technologies":337},"woman-insight-web-developer","Woman Insight Franchise","Web Developer","Odesa \u002F Remote","hybrid","2019-03","2020-10","Maintained a Vue.js and PHP Laravel franchise site with marketing automation, ad\u002Femail\u002FCRM integrations, and custom quizzes over a large contact database.",[331,332,333],"Maintained Vue.js and PHP Laravel site features for franchise marketing.","Operated databases supporting 300K+ contacts with marketing automation workflows.","Integrated ads, email, and CRM systems; built custom quizzes for lead capture.",[335],{"text":336,"qualifier":229},"Supported marketing systems over a database of 300K+ contacts (platform scale).",[338,339,340,135],"Vue.js","PHP","Laravel",{"id":342,"organization":343,"title":344,"engagementType":236,"location":345,"workMode":346,"start":347,"end":348,"scope":349,"contributions":350,"outcomes":354,"technologies":357},"dals-media-project-manager","DALS Media","Project Manager","Odesa, Ukraine","on-site","2018-04","2019-02","Managed and grew a network of media websites, using SEO to generate partner-campaign traffic alongside WordPress and frontend design work.",[351,352,353],"Managed a network of media websites and coordinated partner advertising campaigns.","Used SEO to generate traffic for partner campaigns.","Contributed WordPress and frontend design work across the media network.",[355],{"text":356,"qualifier":248},"Grew partner-campaign traffic through SEO across the media-site network.",[358,359,360,136],"WordPress","SEO","HTML",[362,364],{"slug":39,"name":40,"shortDescription":41,"role":42,"track":43,"stackTags":363,"hasCaseStudy":50,"href":51,"hrefLabel":52},[45,46,47,48,49],{"slug":54,"name":55,"shortDescription":56,"role":57,"track":58,"stackTags":365,"hasCaseStudy":63,"href":64,"hrefLabel":65},[60,61,49,62],[367,485],{"slug":101,"name":102,"shortDescription":103,"description":368,"logo":369,"benefits":373,"guide":407,"launch":445,"github":471,"seo":472,"stackTags":474,"detailTemplate":476,"socialImage":477,"softwareApplication":482},"Simple Rekordbox Converter converts FLAC, ALAC, AIFF, and WAV tracks from Rekordbox 6 and 7 XML playlists into stereo PCM WAV or AIFF files. It generates new [WAV] or [AIFF] playlists for import back into Rekordbox while preserving the original audio files.\n\nThe project includes both an interactive Tkinter macOS application and a command-line interface for macOS, Linux, and Windows.",{"src":370,"alt":371,"width":372,"height":372},"\u002Fcms-files\u002F1319321e-7f58-4a1d-81e9-1d0f4a11e988\u002Fapp.svg","Simple Rekordbox Converter logo",512,[374,377,380,383,386,389,392,395,398,401,404],{"title":375,"description":376},"Rekordbox 6 and 7 XML export\u002Fimport workflow","Export a collection XML, convert playlists, then import the generated [WAV] or [AIFF] playlist through Imported Library.",{"title":378,"description":379},"WAV and AIFF output","Stereo PCM output with quality ceilings that never upsample beyond the source.",{"title":381,"description":382},"FLAC, ALAC, AIFF, and WAV input","Reads lossless sources from the Rekordbox XML without moving or overwriting originals.",{"title":384,"description":385},"Metadata support","Preserves cues, beatgrid, rating, BPM, and tags in the generated import XML.",{"title":387,"description":388},"16\u002F24-bit and 44.1\u002F48 kHz quality ceilings","Bitrate and sample-rate settings cap output; sources below the ceiling stay unchanged.",{"title":390,"description":391},"No source-file modification","Converted audio is written to a separate output folder.",{"title":393,"description":394},"Dry-run and conversion preview modes","Review transcode, copy, and reuse decisions before anything is written.",{"title":396,"description":397},"Conflict detection and rerun handling","Skips or reuses existing outputs safely when you rerun a batch.",{"title":399,"description":400},"Universal Intel\u002FApple Silicon macOS app","Shipped as a universal2 macOS build with an interactive Tkinter UI.",{"title":402,"description":403},"GitHub Actions CI and automated tests","Release builds and unit tests run in CI before publication.",{"title":405,"description":406},"Optional anonymous analytics","Privacy-preserving usage analytics you can enable separately; not required to convert playlists.",{"title":408,"warning":409,"steps":410},"How to use","Do not use File → Import. Point Imported Library at the generated rekordbox-import.xml, then bring in the [WAV] or [AIFF] playlist from the rekordbox xml pane.",[411,414,422,432,435],{"title":412,"body":413},"Export from Rekordbox","Wait until analysis has finished on the tracks you care about. Rekordbox 7: Preferences → Advanced → rekordbox xml → enable Export BeatGrid information. Then File → Export Collection in xml format and save locally (for example Documents\u002Frekordbox). Avoid iCloud or Dropbox for a large export if you can.",{"title":415,"body":416,"image":417},"Convert in the app","Browse to the collection XML, pick playlists and tracks, confirm the output folder, choose WAV or AIFF and the quality ceilings, then Convert. Originals stay put. Import XML is always written as rekordbox-import.xml in that output folder.",{"src":418,"srcThumb":106,"srcset":419,"alt":107,"width":420,"height":421},"\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-main-window.webp","\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-main-window-640w.webp 640w, \u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-main-window-960w.webp 960w, \u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-main-window-1280w.webp 1280w",2240,1440,{"title":423,"body":424,"image":425},"Confirm the preview","Convert opens a preview first (action, reason, quality, size). Back writes nothing. Convert starts the batch. Conflicts — destination files changed outside this app — block Convert until you resolve them.",{"src":426,"srcThumb":427,"srcset":428,"alt":429,"width":430,"height":431},"\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-conversion-preview.webp","\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-conversion-preview-600w.webp","\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-conversion-preview-640w.webp 640w, \u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-conversion-preview-960w.webp 960w, \u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-conversion-preview-1280w.webp 1280w","Conversion preview listing tracks as transcode, copy, or reuse with bit depth, sample rate, and size",1920,1080,{"title":433,"body":434},"Import into Rekordbox","Show the rekordbox xml pane (Preferences → View → Layout → Media Browser). Set Imported Library to rekordbox-import.xml — not the original collection export. Refresh if needed, then import the [WAV] or [AIFF] playlist from rekordbox xml → Playlists. Choose Yes if asked to load information from the library being imported.",{"title":436,"body":437,"image":438},"Edit Import XML","When a generated library already exists, Edit appears beside the Import XML path. Right-click tracks or playlists to Reveal in Finder, remove from playlist, or Move to Trash. Save commits the draft; Cancel discards it. Convert is locked while you are editing.",{"src":439,"srcThumb":440,"srcset":441,"alt":442,"width":443,"height":444},"\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-import-xml-edit.webp","\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-import-xml-edit-600w.webp","\u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-import-xml-edit-640w.webp 640w, \u002Fprojects\u002Frekordbox-playlist-converter\u002Fmacos-app-import-xml-edit-960w.webp 960w","Import XML edit mode with multi-select and a context menu for Reveal in Finder, Remove from playlist, and Move to Trash",1120,748,{"lead":103,"supportingLine":104,"ctas":446,"macosDownloadWarning":454,"trustFacts":455,"trademark":470},[447,451],{"label":448,"href":449,"kind":450,"macosDownload":50},"Download for macOS","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Frekordbox-playlist-converter\u002Freleases","primary",{"label":452,"href":449,"kind":453},"Other platforms","secondary","On first open do right click -> open because the app is ad hoc signed",[456,460,464,467],{"label":457,"value":458,"href":459},"macOS","11 (Big Sur)+ · universal2","",{"label":461,"value":462,"href":463},"License","GNU GPL v3","https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html",{"label":465,"value":466,"href":459},"Privacy","Optional; not required to convert",{"label":468,"value":16,"href":469},"Issues","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Frekordbox-playlist-converter\u002Fissues","Rekordbox is a trademark of AlphaTheta Corporation \u002F Pioneer DJ. This unofficial tool is not affiliated with, endorsed by, or sponsored by AlphaTheta or Pioneer DJ.",{"owner":166,"repo":101},{"title":102,"description":473,"titleSuffix":6},"Convert Rekordbox 6 and 7 XML playlists of FLAC, ALAC, AIFF, and WAV tracks to stereo PCM WAV or AIFF with a macOS app or cross-platform CLI.",[114,115,116,117,118,457,475],"unittest","application",{"src":478,"alt":479,"width":480,"height":481},"\u002Fprojects\u002Frekordbox-playlist-converter\u002Fsimple-rekordbox-converter-social.webp","Simple Rekordbox Converter social image",1200,630,{"applicationCategory":483,"operatingSystem":484,"license":463},"MultimediaApplication","macOS, Linux, Windows",{"slug":121,"name":122,"shortDescription":486,"description":487,"logo":488,"benefits":491,"guide":501,"links":512,"launch":522,"github":543,"seo":544,"stackTags":546,"detailTemplate":547,"kicker":139,"price":548,"softwareRequirements":459,"mediaHeading":551,"mediaIntro":552,"media":553,"socialImage":578,"softwareApplication":580},"Customize SoundCloud layout, queue, themes, and rounding. Toggle everything from the toolbar popup.","SoundCloud UI Toolkit customizes soundcloud.com for larger screens and personal taste. It provides layout, queue, appearance, and rounding controls from a toolbar popup, with preferences synced through Chrome Sync.",{"src":489,"alt":490,"width":372,"height":372},"\u002Fcms-files\u002Fc4e26a06-78c4-4e82-91db-4fee23096673\u002Ficon.svg","SoundCloud UI Toolkit logo",[492,495,498],{"title":493,"description":494},"Enlarged layout","Widen the main SoundCloud content area and read long track names on larger screens.",{"title":496,"description":497},"Appearance presets","Choose from Classic, Accent, Style, and Homage color groups while keeping native SoundCloud colors available.",{"title":499,"description":500},"Rounding controls","Adjust corner radius for artwork, buttons, and the play control from native to extra-rounded.",{"title":408,"steps":502},[503,506,509],{"title":504,"body":505},"Install from Chrome Web Store","Add SoundCloud UI Toolkit from the Chrome Web Store. It is free and requires Chrome 121 or an equivalent Chromium browser.",{"title":507,"body":508},"Open SoundCloud","Open or reload https:\u002F\u002Fsoundcloud.com\u002F in a supported browser. The extension runs only on SoundCloud.",{"title":510,"body":511},"Adjust the interface","Open the extension icon in the browser toolbar and use the control center to change layout, queue, appearance, and rounding settings.",[513,516,519],{"label":514,"href":515},"Source repository","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Fsoundcloud-ui-toolkit",{"label":517,"href":518},"Privacy policy","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Fsoundcloud-ui-toolkit\u002Fblob\u002Fmain\u002FPRIVACY.md",{"label":520,"href":521},"Chrome Web Store listing","https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002FSoundCloud%20UI%20Toolkit\u002Fejehihdgbonfaddicbenfbakcmcdkpnd",{"lead":123,"supportingLine":124,"ctas":523,"trustFacts":526,"trademark":542},[524],{"label":525,"href":521,"kind":450},"Add to Chrome",[527,530,533,537,539],{"label":528,"value":529,"href":459},"Price","Free",{"label":531,"value":532,"href":459},"Browser support","Chrome 121+ and equivalent Chromium browsers",{"label":534,"value":535,"href":536},"Scope","Runs only on soundcloud.com","https:\u002F\u002Fsoundcloud.com\u002F",{"label":465,"value":538,"href":518},"No analytics or personal-data collection",{"label":461,"value":540,"href":541},"MIT","https:\u002F\u002Fgithub.com\u002Fslnnzmtl\u002Fsoundcloud-ui-toolkit\u002Fblob\u002Fmain\u002FLICENSE","SoundCloud is a trademark of SoundCloud Global Limited & Co. KG. This unofficial extension is not affiliated with, endorsed by, or sponsored by SoundCloud.",{"owner":166,"repo":121},{"title":122,"description":545,"titleSuffix":6},"A free Chrome extension that customizes SoundCloud layout, queue, themes, and rounding with a toolbar control center.",[134,135,136,137,138],"extension",{"amount":549,"currency":550},0,"USD","See the difference","Compare the default SoundCloud interface with the enlarged layout, appearance presets, and toolbar control center.",[554,561,565,572],{"src":555,"srcThumb":556,"srcset":557,"alt":558,"width":129,"height":130,"caption":559,"presentation":560},"\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fbefore-default-layout.png","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fbefore-default-layout-640w.webp","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fbefore-default-layout-640w.webp 640w, \u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fbefore-default-layout-960w.webp 960w","Default SoundCloud layout before SoundCloud UI Toolkit customization","Before — the default SoundCloud layout.","comparison_before",{"src":126,"srcThumb":127,"srcset":562,"alt":128,"width":129,"height":130,"caption":563,"presentation":564},"\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fafter-enlarged-layout-640w.webp 640w, \u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fafter-enlarged-layout-960w.webp 960w","After — enlarged layout and queue.","comparison_after",{"src":566,"srcThumb":567,"srcset":568,"alt":569,"width":129,"height":130,"caption":570,"presentation":571},"\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fpurple-appearance.png","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fpurple-appearance-640w.webp","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fpurple-appearance-640w.webp 640w, \u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fpurple-appearance-960w.webp 960w","SoundCloud UI Toolkit purple appearance preset applied to SoundCloud","Appearance preset — Purple.","gallery",{"src":573,"srcThumb":574,"srcset":575,"alt":576,"width":129,"height":130,"caption":577,"presentation":571},"\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fcontrol-center.png","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fcontrol-center-640w.webp","\u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fcontrol-center-640w.webp 640w, \u002Fprojects\u002Fsoundcloud-ui-toolkit\u002Fcontrol-center-960w.webp 960w","SoundCloud UI Toolkit toolbar control center with appearance and layout controls","Toolbar control center.",{"src":566,"alt":579,"width":129,"height":130},"SoundCloud UI Toolkit social image",{"applicationCategory":581,"operatingSystem":196,"license":541,"priceAmount":549,"priceCurrency":550,"installUrl":521,"softwareRequirements":196},"BrowserApplication",[583],{"slug":39,"name":40,"track":43,"role":42,"shortDescription":41,"caseLeadParagraphs":584,"engagementLabel":586,"stageLabel":587,"stackTags":588,"evidenceLinks":589,"heroMedia":592,"sections":599,"claims":684,"seo":688,"socialImage":691},[585],"Telegram booking across text, voice, and guided controls—with identity, availability, and CRM writes enforced by application code.","Independent product · Full-stack & AI engineering","early_production",[45,46,47,48,49],[590],{"label":591,"href":210},"Inspect repository",{"src":593,"srcThumb":594,"srcset":595,"alt":596,"width":597,"height":598},"\u002Fcms-files\u002Fd2155504-86f0-4a20-a116-5c39e0834d3a\u002Ftelegram-crm-architecture.png","\u002Fcms-files\u002Fd2155504-86f0-4a20-a116-5c39e0834d3a\u002Ftelegram-crm-architecture-600w.webp","\u002Fcms-files\u002Fd2155504-86f0-4a20-a116-5c39e0834d3a\u002Ftelegram-crm-architecture-640w.webp 640w, \u002Fcms-files\u002Fd2155504-86f0-4a20-a116-5c39e0834d3a\u002Ftelegram-crm-architecture-960w.webp 960w, \u002Fcms-files\u002Fd2155504-86f0-4a20-a116-5c39e0834d3a\u002Ftelegram-crm-architecture-1280w.webp 1280w","appointment-bot-chat-interface",3200,960,[600,612,646,665],{"id":601,"anchor":602,"kind":603,"eyebrow":604,"heading":605,"bodyParagraphs":606,"layout":609,"items":610,"media":611},"c5db3f95-ff1a-470f-b96c-a0cdd55d9afb","problem","narrative","The challenge","The problem and my role",[607,608],"Appointment requests arrived through free-form text, voice notes, and guided choices, but staff still had to interpret the request, identify the patient, check live availability, get confirmation, and record the visit.","I built the application-owned workflow around Telegram, LangGraph, and EspoCRM so the model could interpret and route requests while identity, availability, and CRM writes stayed under deterministic controls.","text",[],[],{"id":613,"anchor":614,"kind":571,"eyebrow":615,"heading":616,"bodyParagraphs":617,"layout":619,"items":620,"media":630},"89f253bb-20fe-41b3-973e-605f4b687d7b","product-walkthrough","Product walkthrough","Booking an appointment",[618],"Text, voice, and guided controls enter the same CRM-backed booking path. The application presents current choices, keeps the operation specific, and requires confirmation before a write.","split",[621,624,627],{"title":622,"summary":623},"Start with a request","Type a booking question, send a voice note, or use a guided Telegram control.",{"title":625,"summary":626},"Choose a live slot","Select a service, date, and available time returned from the CRM-backed workflow.",{"title":628,"summary":629},"Confirm the operation","Review the specific pending booking, reschedule, or cancellation before the CRM write.",[631,640],{"src":632,"srcThumb":633,"srcset":634,"alt":635,"width":636,"height":637,"caption":638,"presentation":639},"\u002Fcms-files\u002Fc2e391d2-e769-42a5-a4f9-702cb0d5bd14\u002Ftelegram-guided-booking.png","\u002Fcms-files\u002Fc2e391d2-e769-42a5-a4f9-702cb0d5bd14\u002Ftelegram-guided-booking-600w.webp","\u002Fcms-files\u002Fc2e391d2-e769-42a5-a4f9-702cb0d5bd14\u002Ftelegram-guided-booking-640w.webp 640w, \u002Fcms-files\u002Fc2e391d2-e769-42a5-a4f9-702cb0d5bd14\u002Ftelegram-guided-booking-960w.webp 960w","Telegram presents live date and time buttons during a guided appointment booking.",1088,1379,"Guided selection uses application-generated choices from current CRM availability.","screenshot",{"src":641,"alt":642,"width":643,"height":644,"caption":645,"presentation":639},"\u002Fcms-files\u002Fa5c66a2d-e842-43df-8fa7-09db1e1dab2a\u002Ftelegram-voice-booking.png","A Telegram voice request continues into guided date and time selection.",545,705,"Voice enters the same validated booking workflow and receives a text response.",{"id":647,"anchor":648,"kind":649,"eyebrow":650,"heading":651,"bodyParagraphs":652,"layout":609,"items":654,"media":664},"1392ad63-adfb-4072-8f2c-b38ddc0cd23e","engineering-evidence","evidence","Implementation evidence","What was delivered",[653],"The public TypeScript implementation exposes the routing, Telegram controls, identity-scoped CRM tools, approval interrupts, checkpoint persistence, and failure handling.",[655,658,661],{"title":656,"summary":657},"Controlled workflow","Text, voice, and guided controls converge on one application-owned booking path.",{"title":659,"summary":660},"CRM safeguards","Identity-scoped reads, live availability, and operation-specific tools keep CRM state authoritative.",{"title":662,"summary":663},"Explicit writes","Booking, rescheduling, and cancellation pause for confirmation before changing CRM state.",[],{"id":666,"anchor":667,"kind":668,"eyebrow":669,"heading":670,"bodyParagraphs":671,"layout":609,"items":673,"media":683},"32f30958-f2bb-4307-b9db-135685417b70","design-decisions","decisions","Design principles","Key engineering decisions",[672],"The model handles ambiguity and routing; ordinary application code owns correctness-critical behavior.",[674,677,680],{"title":675,"summary":676},"Keep EspoCRM authoritative","The assistant reads live contacts, services, availability, and appointments instead of replacing the CRM.",{"title":678,"summary":679},"Put guarantees in application code","Identity, valid slots, deterministic controls, and operation boundaries do not depend on model behavior.",{"title":681,"summary":682},"Require approval for writes","Each booking, reschedule, or cancellation is tied to a specific pending operation before the write proceeds.",[],[685],{"id":686,"key":687,"publicWording":204},"afe3d937-328a-4934-97a2-4afcb39cff54","independent-ai-fullstack-outcome-1",{"title":689,"description":690},"LangGraph Appointment Bot Case Study | Daniel Kazansky","How a Telegram booking assistant evolved into a controlled LangGraph workflow with live EspoCRM availability, identity checks, explicit approval gates, and deterministic UI.",{"src":692,"srcThumb":693,"srcset":694,"alt":695,"width":696,"height":697},"\u002Fcms-files\u002F585dc830-4ccf-487a-b6de-6d92fa8bf35c\u002Fthree-interfaces-one-workflow.png","\u002Fcms-files\u002F585dc830-4ccf-487a-b6de-6d92fa8bf35c\u002Fthree-interfaces-one-workflow-600w.webp","\u002Fcms-files\u002F585dc830-4ccf-487a-b6de-6d92fa8bf35c\u002Fthree-interfaces-one-workflow-640w.webp 640w, \u002Fcms-files\u002F585dc830-4ccf-487a-b6de-6d92fa8bf35c\u002Fthree-interfaces-one-workflow-960w.webp 960w","AI Appointment & CRM Automation social image",1054,1318,{"status":699,"title":700,"page_intro":701,"back_label":176,"back_href":147,"seo_description":702},"published","Professional experience","Evidence-based timeline from media and web delivery through frontend and full-stack engineering, senior production ownership, and AI-native systems.","Professional timeline for Daniel Kazansky, AI-Native Full-Stack Engineer: digital products, websites, and software delivery from 2018 through AI-native full-stack systems.",1791555510345]