Files
doormilebuild/build/blog/how-ai-is-transforming-last-mile-ev-delivery.txt
2026-06-12 14:59:22 +05:30

541 lines
59 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1:"$Sreact.fragment"
2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"HeaderUIProvider"]
7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default"]
d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"OutletBoundary"]
e:"$Sreact.suspense"
12:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"default",1]
:HL["/_next/static/chunks/17u~6c419s_w~.css","style"]
:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"]
:HL["/css/site.css","style"]
:HL["/images/home-bg-1.png","image"]
:HL["/images/about-bg.png","image"]
:HL["/images/home2-banner-3.jpg","image"]
:HL["/images/home1-slide-1.png","image"]
:HL["/images/home2-banner-1.jpg","image"]
:HL["/images/miletruth-bg.png","image"]
0:{"P":null,"c":["","blog","how-ai-is-transforming-last-mile-ev-delivery"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","how-ai-is-transforming-last-mile-ev-delivery","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/17u~6c419s_w~.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0n.gft-j~h_v_.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0p8hh7bd-e4bn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/home-bg-1.png"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/about-bg.png"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-3.jpg"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/home1-slide-1.png"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-1.jpg"}],["$","link",null,{"rel":"preload","as":"image","href":"/images/miletruth-bg.png"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0h0wg49c7el0c.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],"$L11",false]],"m":"$undefined","G":["$12",["$L13"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"y3G2lMn11oqugOOamFenM"}
15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"ViewportBoundary"]
17:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"MetadataBoundary"]
14:[]
10:"$W14"
11:["$","$1","h",{"children":[null,["$","$L15",null,{"children":"$L16"}],["$","div",null,{"hidden":true,"children":["$","$L17",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L18"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
13:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/17u~6c419s_w~.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
19:T3cfe,
.dm-single-blog {
--dm-red: #c01227;
--dm-red-hover: #e31d32;
--dm-radius-card: 22px;
--dm-radius-img: 20px;
--dm-radius-badge: 8px;
--dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05);
--dm-border: 1px solid rgba(15, 23, 42, 0.09);
--dm-space-p: 24px;
--dm-space-h: 32px;
--dm-space-img: 32px;
--dm-space-quote: 40px;
--dm-sticky-top: 138px;
--dm-measure: min(1100px, 100%);
font-family: var(--font-manrope), sans-serif;
}
/* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6
(120/80/60px UPPERCASE) rules with !important on our own classes. */
.dm-single-blog :where(h1, h2, h3, h4, h5, h6) {
font-family: var(--font-manrope), sans-serif !important;
text-transform: none !important;
font-style: normal !important;
font-weight: 800;
}
/* Neutralize the theme's .elementor-kit-5 a (red color + underline,
specificity 0-1-1) so blog links keep our colors and never get underlined. */
.dm-single-blog a { text-decoration: none !important; }
/* Page banner: tall homepage-scale frame with only badge + title inside */
/* Compound selector (specificity 20) + !important beats the global 800px
single-class height rules so the blog banner can use viewport heights. */
.custom-standard-hero-card.dm-banner-card {
height: 90vh !important;
min-height: 85vh !important;
}
@media (max-width: 1024px) {
.custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; }
}
@media (max-width: 600px) {
.custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; }
}
.dm-banner-inner {
position: relative; width: 100%; height: 100%;
display: flex; flex-direction: column; align-items: center; justify-content: center;
text-align: center; gap: clamp(22px, 2.6vw, 34px);
padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px);
}
.dm-banner-category {
display: inline-block; background: var(--dm-red); color: #fff;
font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px;
padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45);
}
.dm-banner-title {
font-family: var(--font-manrope), sans-serif !important;
font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important;
line-height: 1.16 !important; letter-spacing: -1.2px !important;
color: #ffffff !important; margin: 0; max-width: 820px;
text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38);
}
@media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } }
@media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } }
/* Content wrap begins immediately below the banner */
/* Shared content container: the SAME max-width + horizontal padding is used
by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings,
images, Prev/Next, Related Articles and the CTA banner all align to one
grid with identical left/right edges. Keep both in sync. */
.dm-blog-wrap {
max-width: 1280px; margin: 0 auto;
/* 20px mobile padding floor → 40px on desktop; matches the footer container. */
padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0;
}
/* ── Article meta bar (directly under the hero) ── */
.dm-meta-bar {
display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px;
padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px);
border-bottom: 1px solid rgba(15,23,42,0.10);
}
.dm-meta-breadcrumb ol {
list-style: none; display: flex; flex-wrap: wrap; align-items: center;
gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b;
}
.dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; }
.dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; }
.dm-meta-sep { color: #cbd5e1; }
.dm-meta-current {
color: #0f172a; font-weight: 700;
max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
@media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } }
.dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; }
.dm-meta-item {
display: inline-flex; align-items: center; gap: 7px;
font-size: 13.5px; font-weight: 600; color: #475569;
}
.dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; }
.dm-meta-author { color: #0f172a; font-weight: 700; }
@media (max-width: 600px) { .dm-meta-bar { gap: 12px; } }
.dm-blog-layout {
display: grid; grid-template-columns: minmax(0,1fr) 320px;
/* Tighter gap gives the reading column more room next to the 320px sidebar. */
gap: clamp(28px, 3vw, 56px); align-items: start;
}
@media (max-width: 1024px) {
.dm-blog-layout { grid-template-columns: 1fr; gap: 48px; }
/* Single-column (tablet/mobile): cap the reading column and centre it so the
article never sits left-aligned with a large empty right gutter. */
.dm-blog-main { max-width: 900px; margin-inline: auto; }
}
.dm-blog-main { min-width: 0; }
/* ── Intro lead ── */
.dm-blog-intro {
max-width: var(--dm-measure);
font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500;
color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px;
border-left: 3px solid var(--dm-red);
}
/* ── Article body ── */
.dm-article-body { max-width: var(--dm-measure); }
.dm-article-p {
font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450;
margin: 0 0 var(--dm-space-p);
}
.dm-article-h2 {
font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important;
color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h);
text-wrap: balance;
}
/* Each article block is wrapped in its OWN ScrollReveal <div>, so a bare
:first-child rule matched every heading (each is the only child of its
wrapper) and zeroed its top margin, collapsing the gap above every
section heading. Scope the reset to only the article body's first block. */
.dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3),
.dm-article-body > .dm-article-h2:first-child,
.dm-article-body > .dm-article-h3:first-child { margin-top: 0; }
.dm-article-h3 {
font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important;
color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px;
text-wrap: balance;
}
@media (max-width: 600px) {
.dm-article-p { font-size: 16px !important; }
.dm-article-ul li, .dm-article-ol li { font-size: 15.5px; }
.dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; }
.dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; }
}
.dm-article-ul, .dm-article-ol {
/* Top margin (was 0) separates the list from the paragraph above it;
matching bottom margin keeps it clear of the next heading/paragraph.
Slightly larger than --dm-space-p so the list reads as its own block. */
margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px);
padding-left: 2px; list-style: none;
display: flex; flex-direction: column; gap: 15px;
}
/* Prefixed with .dm-article-body so these beat the theme's global
".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3),
which otherwise replaces our clean red dot with a misaligned checkmark glyph
and adds its own 1.7em indent. */
.dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li {
position: relative; padding-left: 34px;
font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450;
}
.dm-article-body .dm-article-ul li::before {
content: ""; position: absolute; left: 7px; top: 10px;
width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red);
/* kill any inherited fontello glyph from the global rule */
font-size: 0; line-height: 0;
}
.dm-article-ol { counter-reset: dm-li; }
.dm-article-body .dm-article-ol li { counter-increment: dm-li; }
.dm-article-body .dm-article-ol li::before {
content: counter(dm-li); position: absolute; left: 0; top: 0;
width: 24px; height: 24px; border-radius: 7px;
background: rgba(192,18,39,0.10); color: var(--dm-red);
font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center;
}
/* ── Quote ── */
.dm-article-quote {
position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px;
background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%);
border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0;
box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06);
}
.dm-article-quote::before {
content: "\201C"; position: absolute; left: 22px; top: 8px;
font-family: Georgia, "Times New Roman", serif;
font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700;
}
.dm-article-quote p {
font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600;
font-style: italic; color: #1e293b; margin: 0;
}
.dm-article-quote cite {
display: block; margin-top: 16px; font-size: 13px; font-weight: 700;
font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px;
}
@media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } }
/* ── Images ── */
.dm-article-figure { margin: var(--dm-space-img) 0; }
.dm-article-figure-img {
position: relative; display: block; width: 100%; aspect-ratio: 16 / 9;
border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10);
}
.dm-article-figure figcaption {
margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500;
text-align: center; font-style: italic;
}
/* ── Sidebar ── */
.dm-blog-aside-wrap { position: relative; }
.dm-blog-sidebar {
display: flex; flex-direction: column; gap: 18px;
position: sticky; top: var(--dm-sticky-top);
}
@media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } }
.dm-blog-widget {
background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card);
padding: 20px; box-shadow: var(--dm-shadow-card);
}
.dm-blog-widget-title {
font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important;
letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important;
margin: 0 0 15px; padding: 0 0 12px;
border-bottom: 1px solid rgba(15,23,42,0.08);
overflow: visible; white-space: normal; word-break: normal;
}
/* Search */
.dm-sr-only {
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.dm-blog-search { position: relative; }
.dm-blog-search-form { position: relative; }
.dm-blog-search-input {
width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px;
padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a;
background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.dm-blog-search-input::placeholder { color: #9c9c9c; }
.dm-blog-search-input:focus {
outline: none; border-color: var(--dm-red); background: #fff;
box-shadow: 0 0 0 3px rgba(192,18,39,0.11);
}
.dm-blog-search-icon {
position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
color: #94a3b8; pointer-events: none; display: flex;
}
.dm-blog-search-results {
position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0;
background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px;
box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden;
}
.dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; }
.dm-blog-search-result {
display: flex; flex-direction: column; gap: 3px; padding: 10px 12px;
border-radius: 10px; text-decoration: none; transition: background .15s ease;
}
.dm-blog-search-result:hover { background: #f8fafc; }
.dm-blog-search-result-cat {
font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red);
}
.dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; }
.dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; }
/* Recent posts */
.dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; }
.dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; }
.dm-blog-recent-thumb {
position: relative; flex: 0 0 62px; width: 62px; height: 62px;
border-radius: 13px; overflow: hidden; background: #f1f5f9;
}
.dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.dm-blog-recent-title {
font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
transition: color .2s ease;
}
.dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); }
.dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; }
/* Categories */
.dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.dm-blog-category-item {
display: flex; align-items: center; justify-content: space-between; gap: 10px;
padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important;
border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease;
}
.dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; }
.dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; }
.dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dm-blog-category-count {
flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9;
min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex;
align-items: center; justify-content: center; padding: 0 7px;
}
/* CTA card */
.dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; }
.dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; }
.dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; }
.dm-blog-cta-btn {
display: inline-flex; align-items: center; gap: 8px;
background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700;
padding: 12px 22px; border-radius: 12px; text-decoration: none;
transition: background .2s ease, transform .2s ease;
}
.dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); }
c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Better Planning Improves Last-Mile EV Delivery\",\"description\":\"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-17.png\"],\"datePublished\":\"2025-10-02T00:00:00.000Z\",\"dateModified\":\"2025-10-02T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Better Planning Improves Last-Mile EV Delivery\",\"item\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$19"}}],"$L1a","$L1b"]}],"$L1c"]}]}]]}]
1d:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js","/_next/static/chunks/0h0wg49c7el0c.js"],""]
1e:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js","/_next/static/chunks/0h0wg49c7el0c.js"],"ScrollReveal"]
1a:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-17.png)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}]}]
1b:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1d",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1d",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-10-02","children":"Oct 2, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"The last mile is already difficult to plan. With electric vehicles, the team also has to think about battery range, charging time, rider load, traffic, and delivery windows. Good planning turns those moving parts into a workable dispatch plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1e","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a long time, last-mile planning depended on dispatchers, spreadsheets, and local experience. That experience still matters. The problem is that it gets stretched thin when order volume rises and the fleet includes EVs."}]}],["$","$L1e","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The shift from fixed rules to daily planning"}]}],["$","$L1e","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A fixed-zone plan may look clean in the morning, but the road rarely follows the plan. A rider may get delayed near Hitec City, a gated community may hold a vehicle for ten extra minutes, or a battery may drain faster because the load is heavier than usual."}]}],["$","$L1e","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Order volumes by area, time slot, and customer type"}],["$","li","1",{"children":"Travel times based on the city's actual traffic patterns"}],["$","li","2",{"children":"Battery use by vehicle type, rider load, and route length"}],["$","li","3",{"children":"Feedback from completed deliveries, failed attempts, and late arrivals"}]]}]}],["$","$L1e","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Adjusting during the day"}]}],["$","$L1e","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The first plan is only the starting point. By 11 a.m., traffic may change, a high-priority order may arrive, or one vehicle may return with less charge than expected. The dispatch team needs a way to adjust without rebuilding the whole day by hand."}]}],"$L1f","$L20","$L21","$L22","$L23","$L24","$L25"]}]]}],"$L26"]}]]}]
27:T1fa8,
.dm-blog-footer {
font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32;
/* The global theme applies 72px top/bottom section padding — strip it so the
inner container is the single source of vertical rhythm (no double gap). */
padding: 0 !important;
}
/* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */
.dm-blog-footer :where(h1, h2, h3, h4, h5, h6) {
font-family: var(--font-manrope), sans-serif !important;
text-transform: none !important;
font-style: normal !important;
font-weight: 800;
}
/* Neutralize the theme's .elementor-kit-5 a (red color + underline) */
.dm-blog-footer a { text-decoration: none !important; }
/* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px
max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA
align to the exact same left/right edges as the article body above.
Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a
consistent ~6472px section→section gap (no 120px+ voids). */
.dm-blog-footer-inner {
max-width: 1280px; margin: 0 auto;
/* Compact vertical rhythm on an 8px system. Top padding sets the
article→Prev/Next gap (~2432px); the inter-section gap sets the
Prev/Next→Related gap (~3248px). No large arbitrary voids. */
/* Minimal bottom padding — the global site footer already contributes its
own 20px top inset, so the CTA banner sits close to it without a void. */
padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px);
display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px);
}
/* Prev / Next */
.dm-prevnext {
display: grid; grid-template-columns: 1fr 1fr; gap: 20px;
/* Halved from 40px: tight divider→cards spacing without crowding. */
padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08);
}
@media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } }
.dm-prevnext-placeholder { display: block; }
.dm-prevnext-card {
display: flex; gap: 16px; align-items: center; padding: 16px;
background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px;
text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.dm-prevnext-card:hover {
transform: translateY(-4px); border-color: rgba(192,18,39,0.2);
box-shadow: 0 16px 34px rgba(192,18,39,0.10);
}
.dm-prevnext-thumb {
position: relative; flex: 0 0 80px; width: 80px; height: 80px;
border-radius: 16px; overflow: hidden; background: #f1f5f9;
}
.dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.dm-prevnext-next { text-align: right; }
.dm-prevnext-next .dm-prevnext-text { align-items: flex-end; }
.dm-prevnext-label {
display: inline-flex; align-items: center; gap: 6px;
font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red);
}
.dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; }
.dm-prevnext-title {
font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
transition: color .2s ease;
}
.dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); }
/* Related */
.dm-related-heading {
font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important;
line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px;
}
.dm-related-grid {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px;
}
@media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } }
.dm-related-card {
display: flex; flex-direction: column; height: 100%;
background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px;
overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none;
transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease;
}
.dm-related-card:hover {
transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13);
border-color: rgba(192,18,39,0.2);
}
.dm-related-img {
position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9;
}
.dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); }
.dm-related-card:hover .dm-related-img img { transform: scale(1.05); }
.dm-related-badge {
position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff;
font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px;
padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25);
}
.dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; }
.dm-related-card-title {
font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important;
letter-spacing: -.2px !important; margin: 0 0 10px;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
transition: color .2s ease;
}
.dm-related-card:hover .dm-related-card-title { color: var(--dm-red); }
.dm-related-card-excerpt {
font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.dm-related-readmore {
margin-top: auto; display: inline-flex; align-items: center; gap: 7px;
font-size: 12.5px; font-weight: 800; color: var(--dm-red);
text-transform: uppercase; letter-spacing: .6px;
}
.dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); }
.dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); }
/* Contact CTA banner */
.dm-blog-contact-cta {
display: flex; align-items: center; justify-content: space-between; gap: 32px;
flex-wrap: wrap;
background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%);
border-radius: 30px; padding: clamp(32px, 4vw, 56px);
position: relative; overflow: hidden;
}
.dm-blog-contact-cta::after {
content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px;
background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%);
pointer-events: none;
}
.dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; }
.dm-blog-contact-eyebrow {
display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase;
letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px;
}
.dm-blog-contact-title {
font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important;
letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance;
}
.dm-blog-contact-sub {
font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450;
}
.dm-blog-contact-btn {
position: relative; z-index: 1; flex-shrink: 0;
display: inline-flex; align-items: center; justify-content: center; gap: 10px;
background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700;
padding: 16px 32px; border-radius: 16px; text-decoration: none;
box-shadow: 0 10px 26px rgba(192,18,39,0.34);
transition: background .2s ease, transform .2s ease;
}
.dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); }
@media (max-width: 720px) {
.dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; }
.dm-blog-contact-btn { width: 100%; }
}
1c:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$27"}}],"$L28"]}]
29:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js","/_next/static/chunks/0h0wg49c7el0c.js"],"Image"]
2a:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js","/_next/static/chunks/0h0wg49c7el0c.js"],"default"]
1f:["$","$L1e","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, the hub reduced missed delivery windows and improved on-time performance."}]}]
20:["$","$L1e","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L29",null,{"src":"/images/ev-paradox.png","alt":"Electric delivery vehicle routing visualisation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"EV route plans need to account for range, load, traffic, and charging time before riders leave the hub."}]]}]}]
21:["$","$L1e","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"With EVs, a route is only useful if the vehicle can finish it and still return safely."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}]
22:["$","$L1e","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"What this means for operators"}]}]
23:["$","$L1e","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a fleet manager, this is not about fancy software. It is about fewer emergency calls, fewer mid-route swaps, and fewer customers asking why their delivery missed the promised window."}]}]
24:["$","$L1e","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Record delivery times, failed attempts, traffic delays, and charging cycles."}],["$","li","1",{"children":"Build travel-time estimates from the areas your riders actually serve."}],["$","li","2",{"children":"Check every route against battery capacity before dispatch."}],["$","li","3",{"children":"Replan when traffic, orders, or vehicle availability changes."}]]}]}]
25:["$","$L1e","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The fleets that improve fastest are usually not the ones adding vehicles first. They are the ones removing wasted distance, planning charging properly, and giving riders routes they can complete on time."}]}]
26:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L2a",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1d",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L29",null,{"src":"/images/blog-post-pic-15.png","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1d",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L29",null,{"src":"/images/blog-post-pic-31.png","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1d",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L29",null,{"src":"/images/ev-paradox.png","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1d",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L29",null,{"src":"/images/blog-post-pic-14.jpeg","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L2b"]}]}],"$L2c","$L2d","$L2e"]}]]}],"$L2f"]}]}]
28:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","span",null,{"className":"dm-prevnext-placeholder"}],["$","$L1d",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L29",null,{"src":"/images/blog-post-pic-15.png","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1e","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1d",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L29",null,{"src":"/images/blog-post-pic-14.jpeg","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1e","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1d",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L29",null,{"src":"/images/blog-post-pic-15.png","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1e","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1d",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":["$L30","$L31"]}]}]]}]]}],"$L32"]}]
2b:["$","span",null,{"className":"dm-blog-category-count","children":1}]
2c:["$","li","Operations",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}]
2d:["$","li","Sustainability",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}]
2e:["$","li","Technology",{"children":["$","$L1d",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}]
2f:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1d",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]
30:["$","div",null,{"className":"dm-related-img","children":[["$","$L29",null,{"src":"/images/blog-post-pic-31.png","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}]
31:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]
32:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1d",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]
16:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
33:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/0n.gft-j~h_v_.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0p8hh7bd-e4bn.js"],"IconMark"]
f:null
18:[["$","title","0",{"children":"How Better Planning Improves Last-Mile EV Delivery Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","6",{"property":"og:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","7",{"property":"og:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-17.png"}],["$","meta","11",{"property":"og:image:alt","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-10-02T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-17.png"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L33","23",{}]]