caseware/index.html
ilia b5570aaac5 Initial commit: CaseWare developer portfolio site.
Static landing page with experience, services, Cal.com booking, and contact CTAs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 15:54:49 -04:00

368 lines
16 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Ilia Dobkin — CaseWare & CaseView Development | 15+ Years</title>
<meta
name="description"
content="Senior CaseWare/CaseView developer with 15+ years building audit and financial reporting solutions for CaseWare International, MNP, Jazz, and accounting firms. JavaScript-first automation, client templates, release pipelines."
/>
<meta property="og:title" content="Ilia Dobkin — CaseWare & CaseView Development" />
<meta
property="og:description"
content="15+ years of CaseWare/CaseView development, client templates, and release automation."
/>
<meta property="og:type" content="website" />
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%230d2840'/%3E%3Cpath d='M9 11h14M9 16h14M9 21h9' stroke='%23c9a861' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<a href="#main" class="skip-link">Skip to content</a>
<header class="site-header">
<div class="container header-inner">
<a href="#top" class="brand" aria-label="Ilia Dobkin — Home">
<svg class="brand-mark" width="36" height="36" viewBox="0 0 36 36" fill="none" aria-hidden="true">
<rect x="1" y="1" width="34" height="34" rx="7" stroke="currentColor" stroke-width="1.5" />
<path d="M10 12h16M10 18h16M10 24h10" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
</svg>
<span class="brand-text">
<span class="brand-name">Ilia Dobkin</span>
<span class="brand-tag">CaseWare Development</span>
</span>
</a>
<nav aria-label="Primary">
<a href="#experience">Experience</a>
<a href="#services">What I Do</a>
<a href="#impact">Impact</a>
<a href="#contact" class="nav-cta">Get in touch</a>
</nav>
</div>
</header>
<main id="main">
<!-- HERO -->
<section id="top" class="hero">
<div class="container hero-inner">
<div class="hero-eyebrow">
<span class="dot"></span>
<span>Available for new engagements</span>
</div>
<h1 class="hero-title">
15+ years building <em>CaseWare</em> and <em>CaseView</em> for firms that can't afford to slow down.
</h1>
<p class="hero-lede">
I build features, templates, and automation for global audit and financial reporting systems —
with a focus on cutting release cycles, eliminating manual steps, and making CaseWare deployments
boringly predictable.
</p>
<div class="hero-cta-row">
<a href="#contact" class="btn btn-primary">Discuss your CaseWare project</a>
<a href="https://cal.levkin.ca/ilia/consult" class="btn btn-ghost" target="_blank" rel="noopener">Book appointment</a>
<a href="#experience" class="btn btn-ghost">See experience →</a>
</div>
<dl class="hero-stats">
<div>
<dt>Years on CaseWare/CaseView</dt>
<dd>15+</dd>
</div>
<div>
<dt>Release cycle reduction</dt>
<dd>8&nbsp;hrs&nbsp;&nbsp;&lt;&nbsp;2&nbsp;min</dd>
</div>
<div>
<dt>Major clients delivered for</dt>
<dd>CaseWare, MNP, JazzIt +&nbsp;more</dd>
</div>
</dl>
</div>
</section>
<!-- TRUSTED BY -->
<section class="trusted" aria-label="Companies I've worked with">
<div class="container">
<p class="trusted-label">Trusted by teams at</p>
<ul class="trusted-list">
<li>CaseWare International</li>
<li>MNP</li>
<li>JazzIt</li>
<li>+ private accounting firms</li>
</ul>
</div>
</section>
<!-- VALUE / WHAT I DO -->
<section id="services" class="section">
<div class="container">
<div class="section-head">
<p class="kicker">What I bring to a CaseWare team</p>
<h2>From feature work to release automation — the full lifecycle.</h2>
</div>
<div class="value-grid">
<article class="value-card">
<div class="value-num">01</div>
<h3>Feature development</h3>
<p>
CaseWare and CaseView feature work using C#, .NET, and SQL Server. Built and shipped client-facing
functionality for global audit and financial reporting systems used by tens of thousands of accountants.
</p>
</article>
<article class="value-card">
<div class="value-num">02</div>
<h3>Client templates &amp; CaseView</h3>
<p>
Custom CaseView templates and client deliverables — the kind of intricate, regulation-sensitive work
that needs both engineering rigor and an understanding of how auditors actually use the product.
</p>
</article>
<article class="value-card">
<div class="value-num">03</div>
<h3>JavaScript automation</h3>
<p>
JavaScript-based test and workflow automation across CI/CD pipelines — Jenkins, Azure DevOps, GitHub Actions.
Faster feedback for developers, fewer regressions reaching production.
</p>
</article>
<article class="value-card">
<div class="value-num">04</div>
<h3>Release pipeline optimization</h3>
<p>
Build, packaging, and release scripts that turn multi-hour manual releases into a single command.
Reproducible, auditable, and survivable when the person who wrote it is on vacation.
</p>
</article>
<article class="value-card">
<div class="value-num">05</div>
<h3>Mentorship &amp; code review</h3>
<p>
Mentored junior developers and QA engineers across multiple teams — including formal mentorship at
CaseWare International. Better engineers ship better CaseWare.
</p>
</article>
<article class="value-card">
<div class="value-num">06</div>
<h3>Modernization &amp; cleanup</h3>
<p>
Migrating older test suites, scripts, and template build processes to modern toolchains.
Removing the duct tape so your team can move at the speed of the audit cycle, not the build server.
</p>
</article>
</div>
</div>
</section>
<!-- IMPACT / SPOTLIGHT -->
<section id="impact" class="section section-dark">
<div class="container">
<div class="impact-grid">
<div class="impact-copy">
<p class="kicker kicker-light">Signature outcome</p>
<h2>Releases that took a workday now finish before your coffee.</h2>
<p class="section-lede">
At JazzIt, I owned CaseWare/CaseView template delivery and rebuilt the build and packaging
process from the ground up. Releases dropped from roughly <strong>8 hours of manual work</strong> to
<strong>under 2 minutes</strong> — fully scripted, repeatable, and safe to hand off.
</p>
<p class="section-lede">
That same instinct — removing the slow, manual, error-prone parts of how CaseWare teams ship — is what
I bring to every engagement.
</p>
</div>
<aside class="impact-card">
<div class="impact-stat">
<span class="impact-stat-value">~99.6%</span>
<span class="impact-stat-label">faster releases</span>
</div>
<ul class="impact-list">
<li>Scripted build &amp; packaging</li>
<li>Versioned, reproducible artifacts</li>
<li>No more &ldquo;the release person is sick&rdquo;</li>
<li>Predictable deploys across clients</li>
</ul>
</aside>
</div>
</div>
</section>
<!-- EXPERIENCE -->
<section id="experience" class="section">
<div class="container">
<div class="section-head">
<p class="kicker">Experience</p>
<h2>Where I've delivered CaseWare work.</h2>
</div>
<ol class="exp-list">
<li class="exp-item">
<header class="exp-head">
<h3>CaseWare International</h3>
<span class="exp-meta">Hybrid · Full-time · 11 years</span>
</header>
<p class="exp-desc">
Eleven years inside the company that builds CaseWare — feature development, client templates,
and test automation for global audit and financial systems. Mentored junior engineers and helped
shape how teams shipped quality CaseWare features at scale.
</p>
<ul class="exp-stack">
<li>C#</li>
<li>.NET</li>
<li>SQL Server</li>
<li>JavaScript automation</li>
<li>Agile / Scrum</li>
</ul>
</li>
<li class="exp-item">
<header class="exp-head">
<h3>MNP</h3>
<span class="exp-meta">Remote · Full-time</span>
</header>
<p class="exp-desc">
.NET development on CaseWare and CaseView for one of Canada's largest professional services firms.
Built and maintained JavaScript-driven automation running across Jenkins and Azure DevOps pipelines,
with a focus on shortening feedback loops and stabilizing releases.
</p>
<ul class="exp-stack">
<li>C#</li>
<li>.NET Core</li>
<li>JavaScript</li>
<li>Jenkins</li>
<li>Azure DevOps</li>
</ul>
</li>
<li class="exp-item">
<header class="exp-head">
<h3>JazzIt</h3>
<span class="exp-meta">Remote · Contract / consulting</span>
</header>
<p class="exp-desc">
CaseWare and CaseView consulting — template delivery, custom integrations, and process automation.
Rebuilt the build and packaging pipeline from the ground up, cutting release effort from roughly
<strong>8 hours</strong> down to <strong>under 2 minutes</strong>.
</p>
<ul class="exp-stack">
<li>CaseWare</li>
<li>CaseView</li>
<li>Build automation</li>
<li>JavaScript</li>
</ul>
</li>
</ol>
</div>
</section>
<!-- HOW I WORK -->
<section class="section section-muted">
<div class="container">
<div class="section-head">
<p class="kicker">How I work</p>
<h2>Pragmatic, low-drama, easy to plug into your team.</h2>
</div>
<div class="how-grid">
<div class="how-card">
<h3>Understand the business first</h3>
<p>CaseWare lives in audit and accounting. I learn how your team actually uses it before changing it.</p>
</div>
<div class="how-card">
<h3>Small, reviewable changes</h3>
<p>I prefer many tight pull requests over giant ones. Easier to review, easier to roll back.</p>
</div>
<div class="how-card">
<h3>Automate what's painful</h3>
<p>If a step is manual and repeated, it's a candidate for automation — and usually for a 10x speed-up.</p>
</div>
<div class="how-card">
<h3>Leave the codebase healthier</h3>
<p>Better tests, clearer scripts, and documentation that a future hire (or future me) can actually use.</p>
</div>
</div>
</div>
</section>
<!-- CONTACT / CTA -->
<section id="contact" class="cta-section">
<div class="container cta-inner">
<p class="kicker kicker-light">Let's talk</p>
<h2>Need an experienced CaseWare developer on your team?</h2>
<p class="cta-lede">
Whether it's a feature backlog, a custom template, a flaky release pipeline, or a full audit of how your
team ships CaseWare — I'd be glad to take a look.
</p>
<div class="cta-row">
<a class="btn btn-primary btn-large" href="https://cal.levkin.ca/ilia/consult" target="_blank" rel="noopener">
Book appointment
</a>
<a class="btn btn-ghost btn-large" href="mailto:idobkin@gmail.com?subject=CaseWare%20project%20enquiry">
Email idobkin@gmail.com
</a>
<a class="btn btn-ghost btn-large" href="https://www.linkedin.com/in/idobkin/" target="_blank" rel="noopener">
Connect on LinkedIn →
</a>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<p>© <span id="year"></span> Ilia Dobkin · CaseWare &amp; CaseView Development</p>
<p class="footer-meta">
Greater Toronto Area, Canada · <a href="mailto:idobkin@gmail.com">idobkin@gmail.com</a>
</p>
</div>
</footer>
<script>
document.getElementById("year").textContent = new Date().getFullYear();
const header = document.querySelector(".site-header");
const onScroll = () => header.classList.toggle("is-scrolled", window.scrollY > 8);
onScroll();
window.addEventListener("scroll", onScroll, { passive: true });
// Reveal on scroll — only enable when JS + IntersectionObserver are available.
// Use a class on <html> so CSS controls initial state safely.
if ("IntersectionObserver" in window) {
document.documentElement.classList.add("js-reveal");
const targets = document.querySelectorAll(
".section, .hero-inner, .impact-grid, .exp-item, .value-card, .how-card"
);
const io = new IntersectionObserver(
(entries) => {
entries.forEach((e) => {
if (e.isIntersecting) {
e.target.classList.add("is-in");
io.unobserve(e.target);
}
});
},
{ threshold: 0.08, rootMargin: "0px 0px -40px 0px" }
);
targets.forEach((el) => {
el.classList.add("reveal");
io.observe(el);
});
// Safety net: reveal anything still hidden after 1.5s (covers full-page screenshots).
setTimeout(() => {
targets.forEach((el) => el.classList.add("is-in"));
}, 1500);
}
</script>
</body>
</html>